現在、Androidアプリを作ろうとしています。
ネットにあるサンプルコードの継ぎ接ぎばかりなので、理解していない部分が多い状態です。
現在、Box2dという物理演算ライブラリを使っており、
物体が衝突する → 他のアプリが起動する
という動作をさせようとしています。
javaファイルは大まかに、以下の3つです。
0. Activity.java : 起動時の処理や、メニューの定義
0. World.java : ワールドや物体を定義する
0. ContactListener.java : 「World.java」に登録しており、物体が衝突して場合に実行される。
この時、問題として、物体衝突を判定するための
ContactListener.java
から、他のアプリを起動する下記の処理が実行できません。
- PackageManager pm = getPackageManager();
- リストgetPackageManager() は型 MyContactListener で未定義です
- startActivity(intent);
- getPackageManager() は型 MyContactListener で未定義です
- Toast.makeText(this, "対象のアプリがありません", Toast.LENGTH_SHORT).show();
- 型 Toast のメソッド makeText(Context, CharSequence, int) は引数 (MyContactListener, String, int) に適用できません
(Activityのある場所で実行すれば問題なく他のアプリを起動出来ます。)
Java
1 //他のアプリケーションを実行する 2 public void StartOtherApp() { 3 4 //アプリを指定して起動 5 PackageManager pm = getPackageManager(); 6 Intent intent = pm.getLaunchIntentForPackage("com.google.android.gm"); 7 startActivity(intent); 8 9 try { 10 startActivity(intent); 11 } catch (Exception e) { 12 Toast.makeText(this, "対象のアプリがありません", Toast.LENGTH_SHORT).show(); 13 } 14 15 }
恐らく、Activityから実行しなければいけないものだと推測していますが、どのように書き換えたらよいのか理解できておりません。
(Toastによる文字出力などもActivityから実行する必要がありますよね?)
基礎的なことだと思うのでお恥ずかしいですが、お力を貸して頂けますと幸いです。
何卒よろしくお願いします。
(Activityに上記の処理を書いて、ContactListenerから呼びだそうとしても呼び出せないのですね。)
java
1//ContactListener.java 2 3public class MyContactListener implements ContactListener { 4 5 public void beginContact(Contact contact) { 6 System.out.println("衝突が起きました"); 7 ////////////////////////////////// 8 //ここで他のアプリを起動したい! 9 ////////////////////////////////// 10 } 11 12 public void endContact(Contact contact) { 13 System.out.println("離れました"); 14 } 15 16 public void postSolve(Contact contact, ContactImpulse arg1) { 17 // TODO 自動生成されたメソッド・スタブ 18 19 } 20 21 public void preSolve(Contact contact, Manifold arg1) { 22 // TODO 自動生成されたメソッド・スタブ 23 24 } 25} 26
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/05 01:57
退会済みユーザー
2016/06/05 04:01
2016/06/05 08:41