3 回答
TA贡献1829条经验 获得超13个赞
我认为目前的API没有办法做到这一点。我认为这就是他们希望其工作的方式,以便当用户按主键退出时,应用程序无法强制自己重新打开。您可以将home /启动器意图添加到过滤器中,以进行尝试启动的任何活动。然后,用户将可以选择基本将其视为主屏幕。然后,只要用户按下主屏幕按钮,它就会立即启动(他们必须从弹出的列表中选择它,询问他们要使用哪个应用来完成此操作,但他们可以检查是否始终使用这个应用程式,可让您日后迈出这一步。)
TA贡献1856条经验 获得超17个赞
这是我找到的解决方案。
将要立即开始的意图放在PendingIntent中,然后在其上调用send()方法。
所以代替这个
Intent intent = new Intent(context, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
只是这样做
Intent intent = new Intent(context, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, intent, 0);
try {
pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
TA贡献1785条经验 获得超4个赞
我正在使用AlarmManager从Service立即启动Activity。即使您之前已按下主页按钮,活动也将立即开始。
在Android 5.0.1(Galaxy Alpha)上进行了测试。
请勿在6.0.1(Nexus 7 2013)上使用:-(
不要在4.1.2(Galaxy S II)下工作:-(
不要在4.3(ASUS MeMO Pad FHD 10 ME302C)上工作:-(
@TargetApi(Build.VERSION_CODES.KITKAT)
private void startActivity() {
Intent intent = new Intent(this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
long now = Calendar.getInstance().getTimeInMillis();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
alarmManager.setExact(AlarmManager.RTC_WAKEUP, now, pendingIntent);
else
alarmManager.set(AlarmManager.RTC_WAKEUP, now, pendingIntent);
}
- 3 回答
- 0 关注
- 901 浏览
添加回答
举报