入口 android:name=".MainActivity"
android:theme="@style/NoTitleTranslucentTheme">
<category android:name="android.intent.category.LAUNCHER" />
<data
android:host="mainactivity"
android:scheme="cn.mdisplay.threedplay.toolbar" />
</intent-filter>
</activity>
这是开机广播 public void onReceive(Context context, Intent intent) {
LogUtil.d("action", intent.getAction());
if (intent.getAction().equals(ACTION_BOOT)) {
// Intent intent_boot = new Intent(context, MainActivity.class); //显式
// intent_boot.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// context.startActivity(intent_boot);
Intent it = new Intent(Intent.ACTION_MAIN);
ComponentName cn = new ComponentName("cn.mdisplay.threedplay.toolbar", "cn.mdisplay.threedplay.toolbar.MainActivity"); //隐式
it.setComponent(cn);
Uri uri = Uri.parse("cn.mdisplay.threedplay.toolbar")
it.setData(uri);
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);
}
}
显示都正常,隐式:在手机系统安装APK时点击打开无法打开APP
把这个加上试试看 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NO_HISTORY);
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
隐式情况下,系统会查找完全符合条件的Activity去启动,
Intent it = new Intent(Intent.ACTION_MAIN);
ComponentName cn = new ComponentName("cn.mdisplay.threedplay.toolbar", "cn.mdisplay.threedplay.toolbar.MainActivity"); //隐式
it.setComponent(cn);
这一段应该没问题,
Uri uri = Uri.parse("cn.mdisplay.threedplay.toolbar")
it.setData(uri);
这一段你设置的参数与manifest.xml中无法匹配
android:host="mainactivity"
android:scheme="cn.mdisplay.threedplay.toolbar" />
所以系统最终没有找到匹配的Activity,建议先注释掉以下代码再试试,
Uri uri = Uri.parse("cn.mdisplay.threedplay.toolbar")
it.setData(uri);
你首先要确定是否收到了开机广播,目前大部分手机都限制安装的应用接收开机广播,防止应用开机启动。比如小米就不能。如果是厂商定制的话,可以定制系统应用或者加入到对应的白名单。如果是应用开发,你要做好你的应用在很多手机上无法自启动的准备。