我已经设法实现了以下方法编码,允许应用程序在设备启动/启动时执行自动启动。但是,当我测试实现代码时,它无法工作,应用程序无法在设备启动时执行自动启动。任何人都可以帮助或建议我有什么可能性吗?谢谢。
list .xml
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED">
</uses-permission>
<receiver android:enabled="true" android:exported="true"
android:name="com.dapoaugury.apps.robotapp.AutoStartUp"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
android:installLocation="internalOnly">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
自动启动.java
package com.dapoaugury.apps.robotapp;
/**
* To Auto-Start Application on Device Start-up/ Boot
* Created by dev02 on 10/7/15.
*/
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AutoStartUp extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)){
//To start new intent when phone starts up
Intent i = new Intent(context, MainActivity.class);
// To put activity on the top of the stack since activity is launched from context outside activity
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// EDITED
i.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
context.startActivity(i);
}
//To Start Application on Phone Start-up - 10/7/2015(END OF VERSION)
}
}
MainActivity.java(假定在首次安装应用程序时手动启动的机制)
public class MainActivity extends Activity {
public static long AppElapsedTime;
public static long AppElapseTime_hr;
public static long Process_startTime = System.nanoTime();
public static long CurrentProcTime;
private static Context context;
public final static int GREEN = 0;
public final static int BLUE = 1;
private static int cTheme = GREEN;
WebView webView;
ProgressBar pb;
@Override
public void onCreate(Bundle savedInstanceState) {
...........
}
最佳答案
新安装的应用程序将处于“已停止”状态,直到该应用程序真正首次启动。在此状态下,您的任何组件都不会被激活,因此您的 BOOT_COMPLETED
接收器将不会运行。您需要包含一个 Activity 并让用户打开它;您始终可以稍后使用 PackageManager
禁用 Activity。
此行为是在 Android 3.1 中引入的,您可以阅读相关内容 in the release notes (在“对已停止的应用程序启动控制”标题下)。
关于android - 在 Android 中启动设备时应用程序不会自动启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31353411/