BroadcastReceiver工作一段时间,然后停止

时间:2015-02-07 02:11:10

标签: android broadcastreceiver huawei

我正在开发一款响应来电的Android应用。我已经设置了一个广播接收器,在清单文件中设置了权限和意图过滤器,很多时候,它都有效。我可以杀死所有应用程序,重新启动手机,它仍然有效..

然而,有时候它没有反应,在这种情况发生一次之后,它也不会在重新启动后做出反应。

我已经在这个问题上挣扎了大约一个月,这让我开车送香蕉。我真的需要我的应用程序响应每次收到来电。

我已经尝试修剪所有代码,只是在收到或结束通话时显示Toast消息。即使应用程序除此之外什么都不做,行为仍然是相同的。

我无法在模拟器上复制此内容,我使用 HUAWEI ASCEND Y550 进行设备测试。

非常感谢任何帮助,

大卫

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.test.app.receivertest" >

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

  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name=".CallReceiver" android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>
  </application>
</manifest>

我的接收者:

public class CallReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    try {
        if (context == null && intent == null)
            return;

        String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

        String action = intent.getAction();
        Toast.makeText(context, action + " " + state, Toast.LENGTH_SHORT).show();
    } catch (Exception ex) {
        try {
            Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show();
        }
        catch (Exception e)
        {
        }
    }
  }
}

2 个答案:

答案 0 :(得分:4)

我想我可能已经解决了这个问题 - 虽然我是开发甚至使用Android手机的新手......

在我的HUAWEI手机中,我在“受保护的应用”设置中有一个选项 - 那些不会被杀的。

我已经看过一些朋友的Android手机并且无法找到相同的设置 - 所以我说得对,这是一个华为特定的功能,可以补偿电池电量不足。

任何人都可以确认这是华为的具体问题吗?

大卫

答案 1 :(得分:1)

你可以尝试设置优先级。就像这样:

<intent-filter android:priority="1000">