当我从URI
对话框中选择我的应用时,我试图获取刚捕获的screenshot
Open With
。但是我总是在提供的代码示例中从intent.getParcelableExtra(Intent.EXTRA_STREAM)
获取null。
这是我的intent filter
:
实施了两个intent-filter
s
第一个:使我的活动成为主要和发射器。
第二个:使其成为图像查看器。(在系统上将此活动注册为图像查看器)
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
这就是我试图从调用我的活动的意图中获取URI
的方式。
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_VIEW.equals(action) && type != null) {
if (type.startsWith("image/")) {
Uri mediaUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
// Here mediaUri is always null
}
}
答案 0 :(得分:1)
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_VIEW.equals(action) && type != null) {
if (type.startsWith("image/")) {
Uri mediaUri = (Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);
// Here mediaUri is always null
}
}
答案 1 :(得分:1)
引用the documentation for ACTION_VIEW
:
输入:getData()是从中检索数据的URI。
因此,请将您的代码更改为:
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_VIEW.equals(action) && type != null) {
if (type.startsWith("image/")) {
Uri mediaUri = intent.getData();
}
}