我已经开发了应用程序来启动应用程序,但它只在root设备上工作,如下所示。
AndroidManifest.xml文件中的权限和接收者如下所示。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:enabled="true" android:name="in.com.appname.StartAppAtBootReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
下面的是在启动时接收的类。
public class StartAppAtBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent = new Intent(context, MainActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
}
}
我的问题是这段代码适用于非root设备吗? 如果是,那么缺少什么,因为相同的应用程序正在使用root设备。
答案 0 :(得分:0)
这必须在没有root的情况下工作。 否则尝试使用简单的教程,如:Android AutoStart App after boot
的差异:
另一个提示:在清单顶部设置权限,在应用程序部分设置接收者。
答案 1 :(得分:0)
这应该没有root。
有几点需要注意:
BOOT_COMPLETED
BOOT_COMPLETED
的能力。此外,权限应该在清单的根目录而不是应用程序内部:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.x.y" >
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
.
.
.
确保您没有在上述情况下跑步。