我通过以下代码创建了一个android快捷方式
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name)); Intent shortcutIntent = new Intent(); shortcutIntent.setClassName(this,MainActivity.class.getName()); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); shortcut.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); shortcut.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); sendBroadcast(shortcut);
当我打开我的应用程序,最后在某些活动中,如BActivity,然后我切换到主屏幕并单击快捷方式,应用程序来到MainActivity作为上面的代码,我是否有机会避免这种情况,只需让应用程序如果它已经创建,它会进入前景吗?
答案 0 :(得分:3)
最后我找到了正确的方法来做到这一点,一句话这是android中的一个错误,可能会有一个解决方法
if(!isTaskRoot()){
finish();
return;
}
在LaucherClass的onCreate
中添加上面的代码答案 1 :(得分:0)
您可以使用“共享首选项”执行此操作。
因此,在您想要自动重新启动的每项活动中:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
以及类似于以下内容的Dispatcher活动:
public class Dispatcher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}