【发布时间】:2011-08-09 12:58:36
【问题描述】:
我有一个我的 Android 应用程序,我想从我的应用程序中关闭所有其他活动的应用程序。 有没有办法在android中做到这一点?
【问题讨论】:
标签: android
我有一个我的 Android 应用程序,我想从我的应用程序中关闭所有其他活动的应用程序。 有没有办法在android中做到这一点?
【问题讨论】:
标签: android
你可以这样做,但不建议这样做:
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
//get a list of installed apps.
packages = pm.getInstalledApplications(0);
ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
for (ApplicationInfo packageInfo : packages) {
if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
if(packageInfo.packageName.equals("mypackage")) continue;
mActivityManager.killBackgroundProcesses(packageInfo.packageName);
}
【讨论】:
你可以这样做:
int p = android.os.Process.myPid();
android.os.Process.killProcess(p);
【讨论】:
为了避免杀死系统应用你可以这样做,我包含了像华为这样的特定品牌的代码有自己的应用程序(通常包含华为) 和三星有自己的,所以这段代码避免杀死系统应用程序并将关闭所有其他应用程序。系统应用程序通常包含 android 和 adil 是我不想杀死的包
ActivityManager actvityManager = (ActivityManager)
getApplicationContext().getSystemService( getApplicationContext().ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
for(int pnum = 0; pnum < procInfos.size(); pnum++)
{
if((procInfos.get(pnum)).processName.contains("android")||(procInfos.get(pnum)).processName.contains("system")||(procInfos.get(pnum)).processName.contains("huawei")||(procInfos.get(pnum)).processName.contains("adil"))
{
//Toast.makeText(getApplicationContext(), "system apps", Toast.LENGTH_SHORT).show();
}
else
{
actvityManager.killBackgroundProcesses(procInfos.get(pnum).processName);
Toast.makeText(getApplicationContext(), "killed "+procInfos.get(pnum).processName, Toast.LENGTH_SHORT).show();
}
}
【讨论】: