如何为Intent.ACTION_GET_CONTENT提供内容

web和stackoverflow包含几个例子如何从另一个Android应用程序(例如,使用它作为电子邮件附件)使用ACTION_GET_CONTENT意图获取文件。 但是,我必须实现哪种类来创build为ACTION_GET_CONTENT事件提供内容的应用程序,例如我可以select这个应用程序(例如,用于select电子邮件附件)。

ContentProvider是正确的解决scheme吗? 我有什么要添加到我的AndroidManifest.xml?

Solutions Collecting From Web of "如何为Intent.ACTION_GET_CONTENT提供内容"

经过几个小时的networkingsearch,我find了以下解决scheme。

  1. 实现一个活动处理意图。 在其中,使用以下或更具体的代码:

    Uri resultUri = // the thing to return Intent result = new Intent(); result.setData(resultUri); setResult(Activity.RESULT_OK, result); finish(); 
  2. 将以下内容添加到清单:

     <activity android:name="ActivityName" android:label="Some label" > <intent-filter> <action android:name="android.intent.action.GET_CONTENT" /> <category android:name="android.intent.category.OPENABLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PICK" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> </intent-filter> </activity> 

从api级别18开始,传入的intent也可以有EXTRA_ALLOW_MULTIPLE设置为true,在这种情况下,你可以发回多个文件的结果。 为此,您需要将其设置为ClipData:

 resultIntent.setClipData(clipData)