xamarin.android - 按包名关闭(杀死)我的应用程序中的另一个应用程序
问题描述
我想按包名关闭(杀死)我的应用程序中的另一个应用程序。我正在尝试这样的事情,但这段代码不会关闭任何应用程序。我究竟做错了什么?
public void amKillProcess(string package_name)
{
ActivityManager am = (ActivityManager)this.GetSystemService(Context.ActivityService);
IList<RunningAppProcessInfo> runningProcesses = am.RunningAppProcesses;
foreach (RunningAppProcessInfo runningProcess in runningProcesses)
{
if (runningProcess.ProcessName.Contains(package_name))
{
Android.OS.Process.SendSignal(runningProcess.Pid, Signal.Kill);
am.KillBackgroundProcesses(runningProcess.ProcessName);
}
}
}
PS我添加android.permission.KILL_BACKGROUND_PROCESSES
了这个代码,我只能关闭我自己的应用程序
解决方案
如果要杀死后台应用程序,请检查以下代码
public void amKillProcess(string package_name)
{
ActivityManager am = (ActivityManager)this.GetSystemService(Context.ActivityService);
var runningProcesses = am.RunningAppProcesses;
foreach (RunningAppProcessInfo runningProcess in runningProcesses)
{
if (runningProcess.ProcessName.Contains(package_name))
{
Android.OS.Process.KillProcess(runningProcess.Uid);
}
}
}
如果你想杀死一个前台应用程序,你可以使用Adb
public class SuUtil
{
private static Java.Lang.Process process;
public static void kill(string packageName)
{
initProcess();
killProcess(packageName);
close();
}
private static void initProcess()
{
if (process == null)
try
{
process = Runtime.GetRuntime().Exec("su");
}
catch (IOException e)
{
}
}
private static void killProcess(string packageName)
{
System.IO.Stream output = process.OutputStream;
Java.Lang.String cmd = new Java.Lang.String("am force-stop " + packageName + " \n");
try
{
output.Write(cmd.GetBytes());
output.Flush();
}
catch (IOException e)
{
}
}
private static void close()
{
if (process != null)
try
{
process.OutputStream.Close();
process = null;
}
catch (IOException e)
{
}
}
}
推荐阅读
- node.js - 无法在 Express App 中获取客户 IP 地址
- html - 如何让我的图像在 CSS 中通过?
- php - 如何为某个字段具有某个值的所有产品提取 xml 数据?
- admob - 可以使用实时 Admob 代码在测试设备上运行 Admob 广告吗?
- unity3d - 当我打开口型同步选项卡时,Unity 检查器 GUI 坏了
- c++ - 如何使用 Boost MSM 检索包含状态机
- javascript - 编译失败:找不到模块
- logging - Athena 经典负载均衡器日志
- sql - Oracle - to_date() 解析为 00:00:00
- php - response()->json 无法在 Laravel 中解码