2013-01-21 43 views
1

我在我的應用程序中使用廣播接收器來檢測呼入電話,它工作正常。但問題是我無法將行動發送到活動。我的意思是......我想在活動中做一些事情,而不是在接收者身上我讀了很多教程,但他們都在接收器中執行操作。任何想法 ?將接收器的操作發送到活動?

回答

4

您可以聲明BroadcastReceiver作爲Activity的內部類。在這種情況下,您可以直接調用活動的方法:

public class MyActivity extends Activity { 
    private final BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      activityMethod(); 
     } 
    }; 

    private final IntentFilter filter = new IntentFilter("android.intent.action.PHONE_STATE"); 

    @Override 
    protected void onStart() { 
     super.onResume(); 
     registerReceiver(receiver, filter); 
    } 

    @Override 
    protected void onStop() { 
     super.onPause(); 
     unregisterReceiver(receiver); 
    } 

    private void activityMethod() { 
    } 
} 
0

您可以使用Intent啓動Activity,並在Intent額外字段中輸入命令代碼。在您的Activity中,您可以根據命令代碼決定行爲,如果不存在,則採用默認行爲。雖然用戶是要想到的是,手機應用程序啓動時,因爲他們接到一個電話

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent i = new Intent(context, YourActivity.class); 
    startActivity(i); 
} 

注:

0

您可以通過正常手段開始從接收器的活動。通過在股票撥號器應用程序之上傾銷自己的活動來劫持電話很可能不是個好主意。

+0

但是我的活動已經在運行。 –

+0

在這種情況下,您需要使用BroadcastReceiver作爲活動的內部類,如vmironov的答案。而且我仍然認爲值得指出的是,人們不太可能爲接管電話而感到高興。 – FoamyGuy

相關問題