我想注册我的应用程序以接收来自其他应用程序的文件(任何类型,而不仅仅是图像)。我正在关注Receiving Content from Other Apps教程。
我有:
更新了应用的清单:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
实施了活动的onCreate()
方法:
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
this.handleSend(intent);
}
实施了我的私有handleSend()
方法:
void handleSend(Intent intent) {
Uri fileUri = (Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (fileUri != null) {
// OK, now?
}
}
如果我打印fileUri
,则类似content://downloads/all_downloads/5
。但是我如何访问其内容?
答案 0 :(得分:1)
正如@Selvin指出的那样,使用getContentResolver().openInputStream(fileUri);
获取InputStream
ContentProvider
内容的Uri
。 MIME类型应该在Intent
。
答案 1 :(得分:0)
如下所示更改方法
void handleSend(Intent intent) {
try {
Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
imageShare.setImageURI(imageUri);
} catch (Exception e) {
e.printStackTrace();
}
}