我的AndroidManifest中有以下内容:
<activity android:name="IntentChild"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.intent.cursor.item/intent_example"
android:host="example.intent"
android:path="intent_example"
android:scheme="content"
/>
</intent-filter>
</activity>
我用
启动活动Uri uri = new Uri.Builder().scheme("content").authority("example.intent").appendPath("intent_example").build();
Intent intent = new Intent(Intent.ACTION_EDIT, uri);
IntentExample.this.startActivity(intent);
但我明白了:
E/AndroidRuntime( 865): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.EDIT dat=content:// example.intent/intent_example }
我做错了什么?此外,Uri.Builder.authority()
是否与我的清单中android:host
标记的<data>
属性相同?
答案 0 :(得分:0)
@ A - C的评论提示,我最后添加了对Intent.setType()
的调用以设置所需的MIME类型:
Uri uri = new Uri.Builder().scheme("content").authority("example.intent").appendPath("intent_example").build();
Intent intent = new Intent(Intent.ACTION_EDIT, uri);
intent.setType("vnd.intent.cursor.item/intent_example");
IntentExample.this.startActivity(intent);
为简单起见,我还修剪了<intent-filter>
仅宣布android:mimeType
。我想,但不完全确定,这不像以前的改变那么重要。
<activity android:name="IntentChild"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.intent.cursor.item/intent_example"/>
</intent-filter>
</activity>