如何为Intent.ACTION_GET_CONTENT提供内容

时间:2012-08-13 12:04:54

标签: android android-intent android-contentprovider

web和stackoverflow包含几个示例,说明如何使用ACTION_GET_CONTENT意图从另一个Android应用程序获取文件(例如,将其用作电子邮件附件)。但是我需要实现什么类来创建为ACTION_GET_CONTENT事件提供内容的应用程序,例如我可以选择此应用程序(例如,用于选择电子邮件附件)。

ContentProvider是正确的解决方案吗?我需要添加到AndroidManifest.xml中吗?

2 个答案:

答案 0 :(得分:15)

经过几个小时的网络搜索后,我找到了以下解决方案。

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

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

    <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>
    

答案 1 :(得分:0)

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

resultIntent.setClipData(clipData)