2013-01-19 233 views
1

在我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屬性相同?

+0

看來我不得不使用'intent.setDataAndType(URI, 「vnd.intent.cursor.item/intent_example」);',並採取了'機器人:host'屬性來獲得活動推出。不知道爲什麼'host'不能工作。 –

+0

@ A - C謝謝。我會試一試。隨意發佈一個實際的答案。 –

回答

0

由@一個註釋提示 - 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>