2012-03-08 23 views
2

私は他のアプリを開くつもりだったのですが、アプリを開発中です。唯一の問題は、サードパーティのアプリケーションを参照する方法がわからないことです。私は意図を使うつもりです。あなたはpackagenameのみを使用してそれを参照することができますか、またはMain Activityインテントが必要ですか?適切な意図を見つけて参照する簡単な方法はありますか?私はアプリに取り組んでいますインテントから第三者アプリを開く

答えて

2

は、私は他のアプリを開くしようと思っていました。

これは、ホーム画面に表示されているランチャーと同様にランチャーを作成していると解釈しています。

あなたはpackagenameのみを使用していることを参照できますか、メインアクティビティのインテントが必要ですか?

ランチャーは、ACTION_MAIN/CATEGORY_LAUNCHERIntentを使用します。

正しい意図を見つけて参照する簡単な方法はありますか?

使用PackageManagerは、デバイス上のすべての可能なACTION_MAIN/CATEGORY_LAUNCHER活動を見つけ、その後、から選択するようにユーザーにそれらを表示します。特定の選択肢を起動するために適切なIntentを構築することができます。ランチャーを実装

Here is a sample project。そのサンプルアプリを使用して、起動することができたことのリストを思い付く

PackageManager pm=getPackageManager(); 
Intent main=new Intent(Intent.ACTION_MAIN, null); 

main.addCategory(Intent.CATEGORY_LAUNCHER); 

List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0); 

そして、ここではのもの「launchables」のいずれかでユーザがクリックに基づいて、実際の起動ロジックであり、 a ListActivity

@Override 
    protected void onListItemClick(ListView l, View v, 
           int position, long id) { 
    ResolveInfo launchable=adapter.getItem(position); 
    ActivityInfo activity=launchable.activityInfo; 
    ComponentName name=new ComponentName(activity.applicationInfo.packageName, 
             activity.name); 
    Intent i=new Intent(Intent.ACTION_MAIN); 

    i.addCategory(Intent.CATEGORY_LAUNCHER); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
       Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
    i.setComponent(name); 

    startActivity(i);  
    } 
+0

RadioButtonsまたはCheckBoxesも使用する例をご存知ですか? – Magakahn

関連する問題