根据包名关闭其他应用或者进程

/**
	 * 根据包名关闭一个后台应用,正处于前台的应用关不了,带通知栏的服务也属于前台进程,关闭不了
	 * 需要权限KILL_BACKGROUND_PROCESSES 
	 * @param context
	 * @param packageName
	 */
	public static void killApps(Context context,String packageName) {
		try {
			ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);       
			manager.killBackgroundProcesses(packageName);
			System.out.println("TimerV kill background: "+packageName+" successful");
		}catch(Exception ex) {
			ex.printStackTrace();
			System.err.println("TimerV kill background: "+packageName+" error!");
		}
	}

/**
	 * 根据包名关闭应用,已被弃用,听说源码中依然调用killBackgroundProcesses
	 * 需要权限 RESTART_PACKAGES
	 * @param context
	 * @param packageName
	 */
	public static void restartApps(Context context,String packageName) {
		try {
			ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);       
			manager.restartPackage(packageName);
			System.out.println("TimerV restart package "+packageName+" successful");
		}catch(Exception ex) {
			ex.printStackTrace();
			System.err.println("TimerV restart package "+packageName+" error!");
		}
	}
/**
	 * 根据包名启动应用
	 * @param context
	 * @param packageName
	 */
	public static void startApps(Context context,String packageName) {
		try {
			PackageManager packageManager = context.getPackageManager();   
			Intent intent=new Intent();   
			intent =packageManager.getLaunchIntentForPackage(packageName);   
			if(intent==null){  
				System.err.println("TimerV package: "+packageName+" uninstalled!");
			}else{
				intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				context.startActivity(intent);  
			}
			
		}catch(Exception ex) {
			ex.printStackTrace();
			System.err.println("TimerV start package: "+packageName+" error!");
		}
	}

/**
	 * 根据包名和服务名启动一个服务
	 * @param context
	 * @param packageName
	 * @param service
	 */
	public static void startService(Context context,String packageName,String service) {
		try {
			Intent intent=new Intent();
			ComponentName cn = new ComponentName(packageName,service);
			intent.setComponent(cn);
			context.startService(intent);  
		}catch(Exception ex) {
			ex.printStackTrace();
			System.err.println("TimerV start service: "+service+" error!");
		}
	}
	
	/**
	 * 根据包名强制关闭一个应用,不管前台应用还是后台进程,需要share systemuid
	 * 需要权限 FORCE_STOP_PACKAGES
	 * @param context
	 * @param packageName
	 */
	public static void stopApps(Context context,String packageName) {
		try {
			ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
			Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);  
			forceStopPackage.setAccessible(true);  
			forceStopPackage.invoke(am, packageName); 
			System.out.println("TimerV force stop package "+packageName+" successful");
		}catch(Exception ex) {
			ex.printStackTrace();
			System.err.println("TimerV force stop package "+packageName+" error!");
		}
	}

示例代码请参考
https://download.csdn.net/download/peachs885090/10743169
https://pan.baidu.com/s/14IdYIs5APGFAXlklwVJgng 提取码:vfht

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值