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程序设计有所帮助。