该网站和计算器包含几个例子来说明如何使用ACTION_GET_CONTENT意图得到其他Android应用程序的文件(例如,使用它作为电子邮件附件)。 但是,什么样的班级做我要实现以创建ACTION_GET_CONTENT事件比如我可以选择这款app的应用程序提供内容(例如,选择电子邮件附件)。
是ContentProvider的正确的解决方案? 和我有什么要添加到我的AndroidManifest.xml?
该网站和计算器包含几个例子来说明如何使用ACTION_GET_CONTENT意图得到其他Android应用程序的文件(例如,使用它作为电子邮件附件)。 但是,什么样的班级做我要实现以创建ACTION_GET_CONTENT事件比如我可以选择这款app的应用程序提供内容(例如,选择电子邮件附件)。
是ContentProvider的正确的解决方案? 和我有什么要添加到我的AndroidManifest.xml?
网络搜索的几个小时后,我发现了以下的解决方案。
实现一个活动操作意图。 内,使用以下或者更具体的代码:
Uri resultUri = // the thing to return Intent result = new Intent(); result.setData(resultUri); setResult(Activity.RESULT_OK, result); finish();
添加下面的清单:
<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进入的意图也开始可以有EXTRA_ALLOW_MULTIPLE设置为true,在这种情况下,你可以在结果多个文件送回去。 要做到这一点,你需要将其设置为ClipData:
resultIntent.setClipData(clipData)