2012-09-09 12 views
6

私は2つのアンドロイドアプリを持っています。どちらも電話機にインストールされています。 2つのパッケージ名はcom.android.test1とcom.android.test2です。 test1.MainクラスからメソッドMain2method()をどのように呼び出すことができますか? test1のため他のアプリからAndroidの呼び出し方法

クラス:TEST2ため

package com.android.test1; 
import android.app.Activity; 
import android.os.Bundle; 

public class Main extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

は、クラス:

package com.android.test2; 
import android.app.Activity; 
import android.os.Bundle; 

public class Main2 extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public static void Main2method() { 
     //do something.. 
    } 
} 

答えて

9

Intentをブロードキャストして呼び出すことができるかもしれません。

Intent it = new Intent("com.android.test2.Main2method"); 
context.sendBroadcast(it) 

放送を受信するためにcom.android.test1.Main2でBroadcastReceiverを行います

public class ActionReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if ("com.android.test2.Main2method".equalsIgnoreCase(intent.getAction())) { 
      Main2method(); 
     } 
    } 
} 

クラスメイン1ののonCreateメソッドで受信機を登録します。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 

    receiver = new ActionReceiver(); 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction("com.android.test2.Main2method"); 
    registerReceiver(receiver, filter); 
    ... 
} 
+0

質問:私は両方のアプリケーションでActionReceiverクラスを持っている必要がありますか? –

2

あなたが使用する必要があります異なるアプリケーション間でメソッドを呼び出すために、Intent

また、あなたはintent-filterが必要になります およびBroadcastReceiver

-1

あなたが直接することはできません別のアプリから1つのアプリのメソッドを呼び出します。 代わりに、別のアクティビティから1つのアクティビティを呼び出し、インテントフィルタを使用して結果をフェッチする必要があります。

あなたはAPP2にAPP1からのコールバックを送信したい場合は、これらのリンクはあなた

http://www.vogella.com/articles/AndroidIntent/article.html

http://saigeethamn.blogspot.in/2009/08/android-developer-tutorial-for_31.html

3

役立つかもしれない:

  1. あなたはAPP1からのデータでIntentあなた自身をスローする必要があります。 (PendingIntentを見てください)。
  2. yout app2に登録すると、BroadcastReceiverが登録されます。これは、あなたのapp1のIntentsを処理します。
  3. ブロードキャストレシーバのonReceiveメソッド(in app2)は、Intentがapp1によってスローされ、app2によってキャッチされるたびに呼び出されます。 (あなたのロジックをそこに置く)
関連する問題