Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android kiosk应用程序-关闭不需要的应用程序_Java_Android_Multithreading_Android Intent_Android Activity - Fatal编程技术网

Java Android kiosk应用程序-关闭不需要的应用程序

Java Android kiosk应用程序-关闭不需要的应用程序,java,android,multithreading,android-intent,android-activity,Java,Android,Multithreading,Android Intent,Android Activity,我正在创建一个Android kiosk应用程序,一个启动程序应用程序。该应用程序显示允许用户使用的应用程序。我想防止用户打开不需要的应用程序(如最近的应用程序、设置等)。因此,我构建了一个服务(KioskService.class),用于检查活动是否在允许的应用程序列表中。这是通过线程完成的(因此即使打开了另一个应用程序,它也会进行检查) 在打开不允许的应用程序时,我返回kiosk应用程序。我想要的是重新打开上一个活动 比如说。当我打开日历应用程序(这是一个允许的应用程序)时,然后从通知栏打开

我正在创建一个Android kiosk应用程序,一个启动程序应用程序。该应用程序显示允许用户使用的应用程序。我想防止用户打开不需要的应用程序(如最近的应用程序、设置等)。因此,我构建了一个服务(KioskService.class),用于检查活动是否在允许的应用程序列表中。这是通过线程完成的(因此即使打开了另一个应用程序,它也会进行检查)

在打开不允许的应用程序时,我返回kiosk应用程序。我想要的是重新打开上一个活动

比如说。当我打开日历应用程序(这是一个允许的应用程序)时,然后从通知栏打开设置,应用程序需要返回到取消日历活动

提前感谢,


T

关闭其他应用程序可能会给您带来安全问题

安卓国家

您的应用程序在安全的沙箱环境中运行,因此系统上的其他进程无法访问您的代码或私有数据

因此,试图从您自己的服务中关闭其他应用程序可能不是一个可行的选择

但是,如果启动了另一个应用程序,您是否可以将自己的应用程序带回前台

编辑:

看起来像是一个关于如何构建kiosk应用程序的有趣教程


这种方法也很有趣,因为在你的应用程序启动时就启动了,所以不会给用户提供启动另一个应用程序的机会,

@Zain提供的是一个很棒的教程。我已经经历过了

如果要禁用其他应用程序,可以使用adb shell命令

亚洲开发银行壳牌项目管理列表包-将列出所有包


adb shell pm hide com.packagename将禁用任何包。

首先您需要root权限,然后尝试以下步骤:

1) 运行守护程序服务以持续监视用户当前使用的应用程序。这可以通过获取前台应用程序的包名来实现。 要获取前台应用程序的程序包名称,请使用以下代码:

ActivityManager mActivityManager =(ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);

if(Build.VERSION.SDK_INT > 20){
String mPackageName = mActivityManager.getRunningAppProcesses().get(0).processName;
}
else{
  String mpackageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
}
2) 将软件包与您的白名单应用程序进行比较。如果当前应用不在您的列表中,请使用以下代码将其杀死:

Process process = Runtime.getRuntime().exec("adb shell am force-stop packagename");
process.waitFor();

3) 为了防止用户使用通知栏或导航按钮进行导航,您可以关闭系统UI进程,并使您自己的导航按钮实现类似于浮动按钮。

您是否听说过棒棒糖“屏幕锁定”(任务锁定)这是一个完美的信息亭,看看,我确实听说过!我在我的应用程序中使用它。但该应用程序需要在安卓4.3及更高版本上运行!我知道Android文档中的声明。该应用程序不会通过Play Store发布。如果未通过应用程序商店发布,则无所谓。您在Android操作系统上的应用程序不能/不应该访问其他应用程序活动、数据,而不是通过意图或公共内容提供商等。感谢您的回答!现在我意识到了这个问题!有关可能的解决方案,请参见上面的编辑。祝你好运!