1

我通过以下代码创建了一个 android 快捷方式

    Intent 快捷方式 = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 快捷方式.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name));  
    意图快捷方式Intent = new Intent();
    shortcutIntent.setClassName(this,MainActivity.class.getName());
    快捷方式.putExtra(意图.EXTRA_SHORTCUT_INTENT,快捷方式意图);
    快捷方式.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    快捷方式.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

    ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);
    快捷方式.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
    发送广播(快捷方式);

当我打开我的应用程序,最后在一些像 BActivity 这样的活动中,然后我切换到主屏幕并单击快捷方式,应用程序像上面的代码一样来到 MainActivity,我有机会避免这种情况,只是让应用程序进入前台如果它已经创建?

4

2 回答 2

3

最后我找到了正确的方法来做到这一点,总而言之,这是android中的一个错误,可能会出现一种解决方法

if(!isTaskRoot()){
    finish();
    return;
}

在您的 LaucherClass 的 onCreate 中添加上面的代码

于 2013-08-30T05:36:00.993 回答
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));
}

}

于 2013-08-29T13:51:59.127 回答