1

そのため、ユーザーが Skype または電話の連絡先リストを開くことができるようにしたいと考えています。

    if (isPackageExists("com.skype.raider")){

       PackageManager packageManager = getPackageManager();
       Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider");
       Intent contacts = new Intent(Intent.ACTION_VIEW, Contacts.CONTENT_URI); 


       Intent chooserIntent = Intent.createChooser(skype, "Talk");
       chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, contacts);

       startActivity(chooserIntent);       }

chooserIntent は、リストのインテントのいずれも表示しません。

2 つのカスタム インテントのシンプルなセレクターを作成するには?

4

1 に答える 1

0

chooserIntent は、リストのインテントのいずれも表示しません。

あなたの Skype の仮定 (永遠にこのパッケージ名を使用し、永久にランチャーIntentがこのユース ケースに適している) に問題があることは、しばらく脇に置いておきます。

EXTRA_INITIAL_INTENTSまず、正しく使用していません。ドキュメントには、それがIntentオブジェクトの配列であると記載されており、配列を提供していません。

EXTRA_INITIAL_INTENTS第二に、基礎となる chooser によってサポートされているもののリストにない場合、 chooser が を表示するかどうかは不明ですIntent。この場合、Skype は によって返される名簿に含まれていない可能性があるqueryIntentActivities(new Intent(Intent.ACTION_VIEW, Contacts.CONTENT_URI))ため、通常、Skype はセレクターの選択肢にはなりません。EXTRA_INITIAL_INTENTS他のセミランダムIntentオブジェクト(この場合はユーザーよりもOSの観点から「ランダム」)を選択肢のリストに効果的に連結するために使用したことはありません。うまくいくかもしれませんが、うまくいくとは思いません。

私はこれが簡単にできると思った

ListFragmentユーザーが選択できるダイアログ ボックスやの実装Intentsが特に複雑であると考える開発者はほとんどいません。

ユーザーが電話をかける方法を選択するためだけに、新しいポップアップまたはアクティビティを作成する必要があります

前述の修正がうまくいかない場合、それは完全に可能です。

于 2013-09-18T13:30:59.107 に答える