2013-08-29 4 views
1

У меня есть создать андроида ярлык с помощью следующего кодакак избежать нажмите на андроид ярлык создать новый экземпляр приложения и убить старый один

 

    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

Может быть, это может помочь вам, http://stackoverflow.com/questions/12303663/android-resume-app-from- предыдущая позиция –

ответ

2

Наконец Я нахожу правильный способ сделать это, одним словом, это ошибка в android и workouou го могут быть следующие

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

добавить код, указанный выше в OnCreate вашей LaucherClass в

0

Вы можете сделать это, используя общие настройки.

Таким образом, в любой деятельности, вы хотите, чтобы повторно начать автоматически:

@Override 
protected void onPause() { 
    super.onPause(); 
    SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE); 
    Editor editor = prefs.edit(); 
    editor.putString("lastActivity", getClass().getName()); 
    editor.commit(); 

}

И Диспетчерского деятельность, аналогичную следующей:

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)); 
} 

}

+0

поблагодарить у Аруна, но я все еще задаюсь вопросом, есть ли более удобный способ сделать это, потому что, когда вы нажимаете значок в приложении, приложение выходит на передний план с существующим стеком действий, что я хочу сделать то же, решение, которое вы поставили, уничтожит существующий стек активности, чего я избегаю делать, я думаю, что какой-то activity_flag может это сделать, но я прочитал всю документацию и нашел несколько – Minami