zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

一键杀死最近打开APP

App 打开 一键 最近 杀死
2023-09-14 09:09:54 时间
1.AndroidManifest.xml添加:
android:sharedUserId="android.uid.system"

2.Android.mk添加:
LOCAL_CERTIFICATE := platform

3.MainActivity.java
  public void kill_recent_app(){
    pm = getPackageManager();
    am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    recentTasks = am.getRecentTasks(20, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
    numTasks = recentTasks.size();
    first = 0;
    homeInfo = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME).resolveActivityInfo(pm, 0);
    for (int i = first, index = 0; i < numTasks && (index < 20); ++i) {
      recentInfo = recentTasks.get(i);  
      m_intent = new Intent(recentInfo.baseIntent);
      if (recentInfo.origActivity != null) {
m_intent.setComponent(recentInfo.origActivity);
      }

      Log.e(TAG, "PackageName = " + m_intent.getComponent().getPackageName());
      // Don't load the current home activity.
      Log.e(TAG, "Our homeInfo = " + homeInfo);
      if (isCurrentHomeActivity(m_intent.getComponent(), homeInfo)) {
      continue;
      }
      // Don't load ourselves
       Log.e(TAG, "Our PackageName = " + getPackageName());
      if (m_intent.getComponent().getPackageName().equals(getPackageName())) {
      continue;
      }
      stopProcess(m_intent.getComponent().getPackageName());
    }
  }

public void stopProcess(String packageName){
    try {
      Log.e("recentpanview", "--------------stopProcess()-------------");
      ActivityManager mActivityMgr = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
      //第一种:采用反射
      Method forceStopPackage = mActivityMgr.getClass().getDeclaredMethod("forceStopPackage", String.class);
      forceStopPackage.setAccessible(true);
      forceStopPackage.invoke(mActivityMgr, packageName);

      //第二种:直接调用
      //mActivityMgr.forceStopPackage(packageName);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

4.指定kill掉天天动听、喜马拉雅等app
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import java.lang.Exception;
import android.app.ActivityManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ActivityInfo;
import android.content.pm.ResolveInfo;
import android.os.PowerManager;
import java.util.ArrayList;
import java.util.List;

 public void kill_recent_app(){
    ActivityManager.RecentTaskInfo recentInfo;
    Intent m_intent;
    PackageManager pm = getApplicationContext().getPackageManager();
    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RecentTaskInfo> recentTasks = am.getRecentTasks(20, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
    recentTasks = am.getRecentTasks(20, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
    int numTasks = recentTasks.size();
    for(int i = 0; i < numTasks; i++){
      recentInfo = recentTasks.get(i);
      m_intent = new Intent(recentInfo.baseIntent);
      if (recentInfo.origActivity != null) {
        m_intent.setComponent(recentInfo.origActivity);
      }
      Log.e(TAG, " packageName = " + m_intent.getComponent().getPackageName() + "  i = " 
 + i + "  numTasks = " + numTasks);
      try {
        ActivityManager mActivityMgr = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
        //依次kill掉需要kill的app
        if(m_intent.getComponent().getPackageName().equals("com.sds.android.ttpod") == true){
          mActivityMgr.forceStopPackage(m_intent.getComponent().getPackageName());
        }else if(m_intent.getComponent().getPackageName().equals("com.ximalaya.ting.android.car") == true){
          mActivityMgr.forceStopPackage(m_intent.getComponent().getPackageName());
        }
      }catch (Exception e){
        e.printStackTrace();
      }
    }
  }