0

エミュレーターで受信機をテストし、エミュレーターへの顔通話をシミュレートし、電話の状態をログに記録して発信番号を取得することもできますが、実際のデバイスでこれを試しても機能しません。アクティビティを追加しましたが、バックグラウンドで動作している場合は動作します。しかし、なぜそれを追加する必要があるのですか? アクティビティをバックグラウンドで実行する必要があるのはなぜですか?

@Override
public void onReceive(Context cnx, Intent nt) {
    Bundle bnd = nt.getExtras();
    Log.e("EXTRA", "EXTRA");
    if (bnd != null) {
        String state = bnd.getString(TelephonyManager.EXTRA_STATE);
        Log.i("PHONE STATE", state);



        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
            Log.i("PHONE STATE",
                    bnd.getString(TelephonyManager.EXTRA_INCOMING_NUMBER));
        }

    }
4

1 に答える 1

0

アクティビティはフォアグラウンドで実行することを意図しています。プロセスをバックグラウンドで実行する場合は、サービスを使用する必要があります。 ここでもっと読む

あなたの質問については、レシーバー用に別のクラスが必要です。マニフェストファイルにレシーバーを登録して、電話の状態変更アクションを行い、電話の状態を読み取る権限を持っている必要があります。

于 2012-07-15T07:03:28.223 に答える