5

ユーザーがアプリケーション内から選択したアプリを起動したいと思います。しかし、これをどうやってやるのかわかりません。私はこれを試しました:

Intent intent = new Intent();
intent.setAction(Contacts.Intents.SHOW_OR_CREATE_CONTACT);
startActivity(intent);

しかし、これはエラーをスローし、アプリケーションを強制的に閉じるようです。私も追加してみました:

<action android:name="Contacts.Intents.SHOW_OR_CREATE_CONTACT"/>

AndroidManifestファイルにありますが、役に立ちません。

Logcatを見ると、「IOexception-そのようなファイルやディレクトリはありません」であることがわかります。これからいくつかの疑問が生じます。Androidのドキュメントを読んだところ、Contact.Intentsクラスが非推奨になっていることに気付きました。ただし、後継であるContactContractsはAPIレベル5を対象としていますが、私はAPIレベル3を対象としています。これが問題になる可能性がありますか?また、このアプリケーションをコードにハードコーディングしました。ユーザーが選択したアプリケーションのインテントを取得して起動できるようにする方法はありますか?

4

5 に答える 5

7

Androidに何を表示または作成するかを伝えるために、インテントに追加情報を渡す必要があります。そうしないと、Androidは開始するアクティビティを認識せず、(おそらくあなたの場合は)をスローしActivityNotFoundExceptionます。

連絡先の場合は、ジェネリックIntent.ACTION_INSERT_OR_EDITを使用してから、個々の連絡先のMIMEタイプを使用します(Contacts.People.CONTENT_ITEM_TYPE)。

例えば:

Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(People.CONTENT_ITEM_TYPE);
intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");
intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE, Contacts.PhonesColumns.TYPE_MOBILE);

連絡先アプリが表示され、電話番号を追加する既存の連絡先を選択するか、新しい連絡先を作成するように求められます。

外部アクティビティを開始するために、マニフェストに特別なものを追加する必要はありません。連絡先を直接操作する場合にのみContentProvider、マニフェストに適切なCONTACT権限を追加する必要があります。

于 2009-12-29T22:33:57.680 に答える
1

私はその目的のためにこのコードを使用します:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.Settings"); 
startActivity(intent);

これにより設定アプリが起動します。これらも使用できます:

intent.setClassName("com.android.music", "com.android.music.MediaPlaybackActivityStarter");
intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsContactsEntryActivity");
intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsActivity");

1つ目はデフォルトの音楽アプリを起動し、2つ目は連絡先を起動し、3つ目はダイヤラを起動します。お役に立てれば。

于 2010-06-29T18:55:27.087 に答える
0

起動するアプリに有効な引数を渡す必要があります。多くのアプリは、データURIや特定のエクストラが有効であることを期待しています。

于 2009-12-29T22:18:54.873 に答える
0

次のコードを試してください。

インテントインテント=newIntent(Contacts.Intents.SHOW_OR_CREATE_CONTACT);

this.startActivity(intent);

(構文に問題がある場合は申し訳ありませんが、このコンピューターにはAndroidがありません)

そして、マニフェストからアクションを削除します。それは必要ありません。アクションメソッドは他の目的で使用されます。詳細については、Androidサイトをご覧ください:http: //developer.android.com/reference/android/content/Intent.html

ダニエル

于 2009-12-29T22:21:26.493 に答える
0

呼び出しているアクティビティは、それ自体のパッケージのマニフェストだけでなく、CALLINGパッケージのマニフェストにも表示される必要があります。

于 2011-05-27T09:07:44.580 に答える