0

電話やSMSメッセージを送受信するアプリを作ろうとしています。発信部分はうまく機能します。着信をキャッチするためにブロードキャストレシーバーを使用しています。私がそれをデバッグしようとしているとき、それは着信呼び出しでonReceive関数を強化しません。

これはmanifest.xmlです

    <receiver android:name=".MYPhoneStateListener"
       android:exported="true">
    <intent-filter android:priority="999999"> 
        <action android:name="android.intent.action.PHONE_STATE"></action> 
    </intent-filter> 

</receiver> 

</application>

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

これは放送受信機です:

    public class CallBroadcastReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

    if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) 
    {
        Log.d("incoming", "incoming");
    }
}

}

何が問題ですか?着信側を暗示する他の方法はありますか?

4

3 に答える 3

0

マニフェスト ファイルに次のアクセス許可を追加します。

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
于 2013-01-08T13:02:16.640 に答える
0

マニフェスト ファイルで定義したものと一致するようにレシーバーの名前を変更します。

<receiver android:name=".CallBroadcastReceiver"
       android:exported="true">
于 2012-09-13T14:25:07.753 に答える
0

次のように電話リスナーを実装してみてください。

public class PhoneListener extends PhoneStateListener {

    @Override
public void onCallStateChanged(int state, String incomingNumber) {
    }

}

状態は次のとおりです。TelephonyManager.CALL_STATE_RINGING、TelephonyManager.CALL_STATE_OFFHOOK、TelephonyManager.CALL_STATE_IDLE

ブロードキャスト レシーバーでリスナーを登録します。

TelephonyManager telephony = (TelephonyManager)    ctx.getSystemService(Context.TELEPHONY_SERVICE);
        telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
于 2012-09-13T14:39:03.317 に答える