欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android通过反射实现强制停止应用程序的方法

程序员文章站 2024-02-24 11:23:28
本文实例讲述了android通过反射实现强制停止应用程序的方法。分享给大家供大家参考,具体如下: private activitymanager manager;...

本文实例讲述了android通过反射实现强制停止应用程序的方法。分享给大家供大家参考,具体如下:

private activitymanager manager;
private list<runningappprocessinfo> runningprocesses;
private string packname;
private packagemanager pmanager;
@override
public void onreceive(context context, intent intent) {
    pmanager = context.getpackagemanager();
    manager = (activitymanager) context.getsystemservice(context.activity_service);
    killothers(context);
}
/**
* 杀死其他正在运行的程序
*
* @param context
*/
private void killothers(context context) {
    runningprocesses = manager.getrunningappprocesses();
    for (runningappprocessinfo runningprocess : runningprocesses) {
      try {
        packname = runningprocess.processname;
        applicationinfo applicationinfo = pmanager.getpackageinfo(packname, 0).applicationinfo;
        if (!"com.asms".equals(packname)&&filterapp(applicationinfo)) {
          forcestoppackage(packname,context);
          system.out.println(packname+"jjjjjj");
        }
      }catch(exception e){
        e.printstacktrace();
      }
    }
}
/**
*强制停止应用程序
* @param pkgname
*/
private void forcestoppackage(string pkgname,context context) throws exception{
    activitymanager am = (activitymanager)context.getsystemservice(context.activity_service);
    method method = class.forname("android.app.activitymanager").getmethod("forcestoppackage", string.class);
    method.invoke(am, pkgname);
}
/**
* 判断某个应用程序是 不是三方的应用程序
* @param info
* @return
*/
public boolean filterapp(applicationinfo info) {
    if ((info.flags & applicationinfo.flag_updated_system_app) != 0) {
      return true;
    } else if ((info.flags & applicationinfo.flag_system) == 0) {
      return true;
    }
    return false;
}

说明:如果是在activity中将onreceiver方法换成oncreate方法即可。

2.需要在androidmanifest.xml 把package的userid设置为system

<manifest xmlns: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开发入门与进阶教程》、《android service组件使用技巧总结》、《android基本组件用法总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。