簡體   English   中英

有目的地啟動活動

[英]Launching an Activity with an Intent

我的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()是否與清單中<data>標簽的android:host屬性引用的內容相同?

在@ 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM