【问题标题】:Android BroadcastReceiver not working when app is installed from play store从 Play 商店安装应用程序时,Android BroadcastReceiver 无法正常工作
【发布时间】:2012-08-13 18:20:31
【问题描述】:

我有一项通过 Intent.ACTION_BATTERY_CHANGED 获取电池更新的服务:

batteryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
batteryReceiver = new BatteryReceiver();

和接收者:

public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();
    if(action.equals(Intent.ACTION_POWER_CONNECTED)) {
        onBattery = false;
        Log.w("battery","on power");
    }
    else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
        Log.w("battery","on battery");
        onBattery = true;
    }
}

当通过 USB 调试安装应用程序时,这完全符合预期。在我将其发布到 Play 商店并从那里进行全新安装后,它不起作用。其他接收器也无法在应用程序中工作。该应用程序的其余部分似乎工作正常,只是没有广播接收器工作。什么可能导致这种情况发生?

这是 android 2.2,它是对已在商店中的应用程序的更新,接收器在更新之前也可以正常工作。

【问题讨论】:

    标签: android android-intent google-play broadcast


    【解决方案1】:

    如果您在 Android 3.1+ 上运行,并且您没有手动运行您的某个组件(例如,从启动器启动 Activity),那么您在清单中注册的 BroadcastReceivers 都不会起作用。

    【讨论】:

    • 这是在 Android 2.2 上,它是对现有应用程序的更新,因此它已经手动启动过一次。这些接收器也没有在清单中注册,而是通过代码中的 IntentFilter 设置。接收器在此更新之前工作......(当然可以通过 USB 调试正常工作)。
    • @user1596144:你怎么知道你的服务正在运行?
    • 我使用 startForeground 并且通知显示在左上角。该应用程序的所有其他方面都正常工作。
    • @user1596144:那么除非有什么错误导致您的服务无法通过注册接收器的代码路径,否则我无法解释您的症状。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多