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:インテントを処理するアクティビティが見つかりません{act = android.intent.action.EDIT dat = content://
example.intent /intent_example}

私は何が間違っているのですか?また、マニフェストのタグの属性Uri.Builder.authority()と同じものを参照し ますか?android:host<data>

4

1 に答える 1

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>
于 2013-01-22T19:14:46.110 に答える