2012-09-09 57 views
6

我有2個android應用程序。兩者都安裝在手機上。假設這兩個包的名稱是com.android.test1和com.android.test2。我怎樣才能從test1.Main類調用方法Main2method()從另一個應用程序的Android調用方法

班測試1:

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); 
    } 
} 

班測試2:

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 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(); 
     } 
    } 
} 

註冊接收器類MAIN1的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類嗎? –

3

如果你想從APP1發送回調APP 2:

  1. 你應該從APP1數據拋出自己Intent 。 (看看PendingIntent)。
  2. 進入你的app2你應該註冊BroadcastReceiver這將處理你的app1的Intents
  3. broadcastreceiver的onReceive方法(在app2中)每當你的Intent被app1拋出並被app2拋出時,都會被調用。 (把你的邏輯放在那裏)
相關問題