java - 使用 RINGER_MODE_CHANGED 的广播接收器

标签 java android

我正在尝试更新振铃器的更改模式并将其记录到 TextView 中。感谢您的帮助!

这是我的接收者 list :(我发现不需要任何权限)

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

我在 Activity 中使用广播接收器,如下所示:当我运行应用程序时,没有任何内容被附加到 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;
        }

最佳答案

您的接收者名称未在 list 文件中正确声明。

更改这行代码

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

到此

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

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

关于java - 使用 RINGER_MODE_CHANGED 的广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530184/

相关文章:

android - 可见并消失了android中的 fragment

java - 改进基于上下文的搜索

java - 跳过列表搜索空指针异常

android - 选项卡布局中的 map View 抛出,java.lang.IllegalStateException : Binder has been finalized , 终结器抛出未捕获的异常

java - 保存和检索数组并在 ListView 中显示

Android单例线程与服务器通信

java - 日期转换jsp

java - 多维四向链表

java - 通过 Android 阅读推文

java - 通过可能的对话框向用户提供前台下载