2012-12-19 117 views
2

我正在为6个国家/地区工作的I18N应用程序工作,在用户需要更改设置中的语言时,应重新启动本身并以更改后的语言显示应用程序。为此,我将语言值存储在共享首选项中,并与当前语言值进行比较。如果值不一样,我需要重新启动应用程序。为此,我使用以下代码:以编程方式重新启动android应用程序

if (currentLanguage == null) { 
    Util.saveStringInSP(_activity, "LANGUAGE", languageValue); 
} 
else if (currentLanguage.equalsIgnoreCase(languageValue)) { 
    String currentLanguage = Util.getStringFromSP(_activity, "LANGUAGE"); 
} 
else { 
    try { 
     android.os.Process.killProcess(android.os.Process.myPid()); 
    } 
    catch(Exception e) { } 
    Intent i = new Intent(); 
    PackageManager manager = getPackageManager(); 
    i = manager.getLaunchIntentForPackage("com.pfizer.stablemate"); 
    i.addCategory(Intent.CATEGORY_LAUNCHER); 
    startActivity(i); 
} 

请为我提供一段代码,以便在语法上重新启动android应用程序。 感谢 Ganesh神

+4

你不需要杀/重新启动了点。你只需在清单中的configChanges字段中输入** not ** * locale *,android会为你重新开始你的活动。 – njzk2

+0

我不想重新启动活动,我需要从头开始重新启动整个应用程序。 – Ganesh

+0

那么你实际上可以在你的configChanges字段中有**语言环境,并且在你的活动中接收到onConfigChange中的语言环境变化 – njzk2

回答

3

尝试:

Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(  
getBaseContext().getPackageName()); 
intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
相关问题