1

特定の番号をダイヤルしてアクティビティを開始しようとしました。しかしNEW_OUTGOING_CALL、HTC g17 でブロードキャストを受信できません。これが私のコードです。

    <receiver android:name="com.example.security.receiver.CallPhoneReceiver">
        <intent-filter >
            <action 
                android:name="android.intent.action.NEW_OUTGOING_CALL"
                android:priority="10000"/>
            </intent-filter>
    </receiver>

そして、私はこのような許可を追加しました

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>

私のレシーバー機能は

package com.example.security.receiver;

import com.example.security.ui.LostProtectedActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class CallPhoneReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Log.i("annoy",this.getResultData());
    String outPhoneNumber = this.getResultData();
    if(outPhoneNumber.equals("201314")){
        Intent i = new Intent(context,LostProtectedActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
        context.startActivity(intent);
        setResultData(null);
    }
}

}
4

1 に答える 1

0

私はまだそれを理解しています.「CallPhoneReciever」に間違いがあります.それは

context.startActivity(i);

いいえ

context.startActivity(intent);

そして、優先度を 2147483647 (int の最大値) に設定する方が良いと思います。これは 1000 より前です。ただし、優先度が 2147483647 であることを前提に、大企業によって作成されたアプリケーションがいくつかありますBroadcastReceiver。これらのアプリケーションは、静的に登録されているアプリケーションよりも早くブロードキャストを受信します。

于 2013-11-12T07:20:11.553 に答える