2012-03-17 15 views
1

私は第三者のアプリケーションを起動するためにpackagenamesを使用するアプリケーションを開発しています。私はいくつかの調査を行い、すべてのアプリをランチャーの意図から開始できることを発見しました。ボタンのクリックからこれを行う方法を知っている人はいますか?第三者のアプリケーションを開く

+0

重複http://stackoverflow.com/questions/3422758/start-application-knowing-package-name – Calvin

+0

: はここに同じのための完全なコードです。私はそれを始める方法を尋ね、その質問はパッケージ名を見つける方法です。私はすでにパッケージ名を見つける方法を知っています。 – Magakahn

答えて

6

あなたは本当に 'アプリケーションを開始' することはできません。あなたがパッケージ名を知っていれば、サードパーティのアプリケーションから起動インテントを取得しようとすることができます:サードパーティのアプリがあなたのエミュレータにインストールされていない場合

Intent intent = getPackageManager().getLaunchIntentForPackage("com.thirdparty.package"); 
startActivity(intent); 
+1

すでに開いているアプリケーションを再オープンするには、フラグを "setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)"に設定する必要があります。 – JacksOnF1re

2

だけView.OnClickListenerにそれを置く:

myButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = getPackageManager().getLaunchIntentForPackage(theOtherActivityPackage); 
     startActivity(intent); 
    } 
}); 
4

上記受け入れ答えのために、あなたは優雅にも、それを処理する必要があります。これは重複ではありません

public void openThirdPartyApp() { 

     Intent intent = new Intent("com.thirdparty.package"); 
      intent.setPackage("com.thirdparty.package"); 

      try { 
       ((Activity) context).startActivityForResult(intent, REQUEST_CODE); 
      } catch (ActivityNotFoundException e) { 
       downloadIt(); 
      } 
     } 

    private void downloadIt() { 

    Uri uri = Uri.parse("market://search?q=pname:" + "com.thirdparty.package"); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 

       try { 
        context.startActivity(intent); 
       } catch (ActivityNotFoundException e) { 
    //creates a small window to notify there is no app available 
       } 

      } 
     } 

    } 
+0

良い答えが、これは私がやっていることでは機能しません。私は、パッケージ名を取得して起動するpackagemanagerを使用しています。しかし、これは後のプロジェクトで有用かもしれません。答えてくれてありがとう! – Magakahn

+0

これは機能しません...インテント初期化コードでは:Intent intent = new Intent( "com.thirdparty.package"); "android.intent.action.MAIN"のようなアクションが必要ですか? – syonip

+0

@syonip、なぜあなたは "android.intent.action.MAIN"を使用しますか? – YuDroid

関連する問題