7

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

ContentProvider 是正确的解决方案吗?我必须在我的 AndroidManifest.xml 中添加什么?

4

2 回答 2

16

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

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

    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>
    
于 2012-08-13T18:56:02.900 回答
1

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

resultIntent.setClipData(clipData)
于 2017-11-23T09:34:24.683 回答