找不到处理Intent的活动 – android.intent.action.OPEN_DOCUMENT

我正在尝试使用Android 4.4的存储访问框架

我开发了一个虚拟的应用程序,它激发了开始活动的意图。

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(intent, READ_REQUEST_CODE); 

另外我还开发了另一个虚拟应用程序作为文件提供者。

  <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.saf" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.saf.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <provider android:name="com.example.saf.MyFileProvider" android:authorities="com.example.saf.documents" android:exported="@bool/is_kitkat" android:enabled="@bool/is_kitkat" android:grantUriPermissions="@bool/is_kitkat" android:permission="android.permission.MANAGE_DOCUMENTS"> <intent-filter> <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> </intent-filter> </provider> </application> 

我已经实现了类MyFileProvider。

但是当我启动用户应用程序(引发意图的应用程序)时,出现以下错误

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.OPEN_DOCUMENT cat=[android.intent.category.OPENABLE] } 

我只是跟随android的开发人员文档。 任何想法我可能做错了什么?

编辑:这是我最新的清单。 我也需要有一个“适当的”MyFileProvider“扩展DocumentsProvider”的实现吗? 我现在可以在函数中返回null吗?

Solutions Collecting From Web of "找不到处理Intent的活动 – android.intent.action.OPEN_DOCUMENT"

添加一个MIMEtypes,或者只是intent.setType("*/*")

这似乎是一个已知的问题 。 setType()是必需的。

编辑:您还需要添加android:enabled="true" ,请注意,您应该从值中引用它,而不是直接为它启用> = kitkat。 所以android:enabled="@bool/is_kitkat"<bool name="atLeastKitKat">false</bool> in /res/values/<bool name="atLeastKitKat">true</bool> in /res/values-v19/

要打开所有文件,请添加以下行:

 intent.setType("*/*") ; 

如果您需要过滤显示图像,请添加以下行:

 intent.setType("image/*"); 

只是施展你的意图,就像,

  Intent intent = new Intent("android.intent.action.GET_CONTENT"); ((Intent)intent).addCategory("android.intent.category.OPENABLE"); ((Intent)intent).setType("*/*");