使用RINGER_MODE_CHANGED的广播接收器

时间:2015-02-15 19:29:42

标签: java android

我正在尝试更新并将ringer的更改模式记录到textview中。谢谢你的帮助!

这是我的接收器清单:(我找不到任何权限)

    <receiver android:name="RingTypeMainActivity$RingTypeBroadcastReceiver" >
        <intent-filter>
            <action android:name="android.media.RINGER_MODE_CHANGED" >
            </action>
        </intent-filter>
    </receiver>

我在我的Activity中使用Broadcastreceiver:当我运行应用程序时,没有任何内容被附加到textview(txtResults)。

public static class RingTypeBroadcastReceiver extends BroadcastReceiver{


    @Override
    public void onReceive(Context context, Intent intent) {

        int num = intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -1);

        switch (num) {
        case 0:
            txtResults.append("Mode " +  String.valueOf(num) + " - Normal audio mode: not ringing and no call established.");
            break;

        case 1:
            txtResults.append("Mode " +  String.valueOf(num) + " - Ringing audio mode. An incoming is being signaled.");
            break;

        case 2:
            txtResults.append("Mode " +  String.valueOf(num) + " - In call audio mode. A telephony call is established.");
            break;

        case 3:
            txtResults.append("Mode " +  String.valueOf(num) + " - In communication audio mode. An audio/video chat or VoIP call is established.");
            break;

        default:
            break;
        }

1 个答案:

答案 0 :(得分:1)

您的联系人姓名未在清单文件中正确声明。

更改此行代码

<receiver android:name="RingTypeMainActivity$RingTypeBroadcastReceiver" >

到这个

<receiver android:name=".RingTypeMainActivity$RingTypeBroadcastReceiver" >

在接收者名称之前添加一个点(。)是您的包名称的缩写。