Android通过反射实现强制停止应用程序的方法
本文实例讲述了Android通过反射实现强制停止应用程序的方法。分享给大家供大家参考,具体如下:
privateActivityManagermanager;
privateList<RunningAppProcessInfo>runningProcesses;
privateStringpackName;
privatePackageManagerpManager;
@Override
publicvoidonReceive(Contextcontext,Intentintent){
pManager=context.getPackageManager();
manager=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
killOthers(context);
}
/**
*杀死其他正在运行的程序
*
*@paramcontext
*/
privatevoidkillOthers(Contextcontext){
runningProcesses=manager.getRunningAppProcesses();
for(RunningAppProcessInforunningProcess:runningProcesses){
try{
packName=runningProcess.processName;
ApplicationInfoapplicationInfo=pManager.getPackageInfo(packName,0).applicationInfo;
if(!"com.asms".equals(packName)&&filterApp(applicationInfo)){
forceStopPackage(packName,context);
System.out.println(packName+"JJJJJJ");
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
/**
*强制停止应用程序
*@parampkgName
*/
privatevoidforceStopPackage(StringpkgName,Contextcontext)throwsException{
ActivityManageram=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
Methodmethod=Class.forName("android.app.ActivityManager").getMethod("forceStopPackage",String.class);
method.invoke(am,pkgName);
}
/**
*判断某个应用程序是不是三方的应用程序
*@paraminfo
*@return
*/
publicbooleanfilterApp(ApplicationInfoinfo){
if((info.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)!=0){
returntrue;
}elseif((info.flags&ApplicationInfo.FLAG_SYSTEM)==0){
returntrue;
}
returnfalse;
}
说明:如果是在Activity中将onReceiver方法换成onCreate方法即可。
2.需要在AndroidManifest.xml把package的userid设置为system
<manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.asms" android:versionCode="1" android:versionName="1.0"android:sharedUserId="android.uid.system">
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《AndroidService组件使用技巧总结》、《Android基本组件用法总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。