gpt4 book ai didi

关闭应用程序时未收到 Android BOOT_COMPLETED

转载 作者:IT老高 更新时间:2023-10-28 22:03:45 27 4
gpt4 key购买 nike

我知道这个问题在网站上被问了很多,但是,我似乎找不到解决方案。当应用程序未运行时,不会调用我的 BOOT_COMPLETED 接收器。

list :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.startuptest"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.startuptest.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="com.example.startuptest.StartUpBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>

StartUpBootReceiver:

public class StartUpBootReceiver  extends BroadcastReceiver {

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

Log.d("startuptest", "StartUpBootReceiver " + intent.getAction());

if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
Log.d("startuptest", "StartUpBootReceiver BOOT_COMPLETED");
}
}
}

如果应用程序正在运行并且我模拟了一个调用

adb shell
am broadcast -a android.intent.action.BOOT_COMPLETED

事件被正确接收,但是,如果应用程序关闭,则事件不会被接收,也不会在启动时被接收。

我已经安装了该应用程序,然后启动了几次以确保它已注册。我对这个很迷茫,所以任何建议都将不胜感激。

编辑:我可以在日志中看到所有其他关闭的应用程序(Youtube、FileObserver 等)都收到了 boot_completed 事件,只是不是我的。

最佳答案

Android 3.1 开始,所有应用程序在安装后都处于“stopped”状态。(这与应用程序在用户从设置应用程序强制停止应用程序。)

Android stopped state

当处于“停止”状态时,应用程序不会出于任何原因运行,除非手动启动 Activity 。 (意味着不会调用 BroadcastReceviers(ACTION_PACKAGE_INSTALLEDBOOT_COMPLETED 等),无论他们注册的事件如何,直到用户手动运行应用程序。)

这是 Google 采取的反恶意软件举措。谷歌提倡用户应该先从启动器启动一个 Activity ,然后该应用程序才能做很多事情。阻止 BOOT_COMPLETED 在 Activity 启动之前交付是该参数的逻辑结果。

更多详情:
http://developer.android.com/about/versions/android-3.1.html#launchcontrols
http://commonsware.com/blog/2011/07/05/boot-completed-regression.html
http://devmaze.wordpress.com/2011/12/05/activating-applications/

关于关闭应用程序时未收到 Android BOOT_COMPLETED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226410/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com