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程序设计有所帮助。
热门推荐
10 祝女儿简短祝福语大全
11 大学新年祝福语简短创意
12 元旦适合的祝福语简短
13 朋友出远门祝福语简短
14 初六简短的祝福语
15 祝男孩生日祝福语简短
16 同事调离的祝福语简短
17 拜年红包的祝福语简短
18 妈妈生日祝福语简短励志