質問: pm.getLaunchIntentForPackage("com.google.android.gm"); startActivity(intent); try { startActivity(intent); } catch (Exception e) { Toast.makeText(this, "対象のアプリがありません", Toast.LENGTH_SHORT).show(); } } ``` 恐らく、Activityから実行しなければいけないものだと推測していますが、どのように書き換えたらよいのか理解できておりません。 (Toastによる文字出力などもActivityから実行する必要がありますよね?) 基礎的なことだと思うのでお恥ずかしいですが、お力を貸して頂けますと幸いです。 何卒よろしくお願いします。 (Activityに上記の処理を書いて、ContactListenerから呼びだそうとしても呼び出せないのですね。) ``` //ContactListener.java public class MyContactListener implements ContactListener { public void beginContact(Contact contact) { System.out.println("衝突が起きました"); ////////////////////////////////// //ここで他のアプリを起動したい! ////////////////////////////////// } public void endContact(Contact contact) { System.out.println("離れました"); } public void postSolve(Contact contact, ContactImpulse arg1) { // TODO 自動生成されたメソッド・スタブ } public void preSolve(Contact contact, Manifold arg1) { // TODO 自動生成されたメソッド・スタブ } } ```
回答: こんな感じでいいのでは? コンパイル・動作確認していません。 ``` public class MyContactListener implements ContactListener { private final Context context; public MyContactListener(Context context) { this.context = context; } public void beginContact(Contact contact) { System.out.println("衝突が起きました"); ////////////////////////////////// //ここで他のアプリを起動したい! ////////////////////////////////// } public void endContact(Contact contact) { System.out.println("離れました"); } public void postSolve(Contact contact, ContactImpulse arg1) { // TODO 自動生成されたメソッド・スタブ } public void preSolve(Contact contact, Manifold arg1) { // TODO 自動生成されたメソッド・スタブ } public void StartOtherApp() { //アプリを指定して起動 PackageManager pm = context.getPackageManager(); Intent intent = pm.getLaunchIntentForPackage("com.google.android.gm"); // context.startActivity(intent); try { context.startActivity(intent); } catch (Exception e) { Toast.makeText(context, "対象のアプリがありません", Toast.LENGTH_SHORT).show(); } } } ```