如何为Intent.ACTION_GET_CONTENT提供内容

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

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

  • 如何从另一个Android应用程序启动Android服务
  • 在指定的个人资料页面上打开Facebook应用
  • 如何将意图与extras传递给已经运行的活动
  • 在Android中将列表传递给另一个活动
  • “尝试确定电池电量时,不允许IntentReceiver组件注册接收意图”
  • Android - 设备解锁后会发生什么?
  • 如何从AsyncTask中的onPostExecute发回数据?
  • 用于select与壁纸区域突出显示壁纸
  • 经过几个小时的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)