1

アプリでブロードキャストレシーバーを使用して着信を検出していますが、正常に機能しています。しかし、問題は私が活動に行動を送ることができないということです。つまり..私はレシーバーではなくアクティビティで何かをしたいのです。私は多くのチュートリアルを読みましたが、それらはすべてレシーバーでアクションを実行しています。何か案が ?

4

3 に答える 3

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() {
    }
}
于 2013-01-21T14:34:55.787 に答える
0

Activityを使用して を開始し、追加フィールドIntentにコマンド コードを入力できます。その後、コマンド コードに基づいて動作を決定するか、何も存在しない場合はデフォルトの動作に頼ることができますIntentActivity

于 2013-01-21T14:25:57.827 に答える
0

通常の方法でレシーバーからアクティビティを開始できます。

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

ただし、ユーザーは電話を受けるため、電話アプリケーションが起動することを期待することに注意してください。ストックダイヤラーアプリの上に自分のアクティビティをダンプして電話を乗っ取るのは、おそらく悪い考えです.

于 2013-01-21T14:27:27.910 に答える