繁体   English   中英

Android Kiosk 模式 - 允许退出

[英]Android Kiosk Mode - Allow Exit

我正在为 kiosk 模式编写 Android 应用程序。 我正在使用本教程创建信息亭模式: http : //www.andreas-schrade.de/2015/02/16/android-tutorial-how-to-create-a-kiosk-mode-in-android/

但是,在教程中,用户仍然可以单击主页,然后在 2 秒后返回应用程序。

所以,我做了一些修改,通过将我的应用程序作为主页来禁用主页按钮。 我是通过把它放在我的清单中来做到的:

<activity android:name=".MainActivity"
          android:launchMode="singleInstance">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

一切正常。 但是当用户尝试退出(即用户以管理员身份登录)时,我的应用程序又回来了。 我怀疑是因为我将其设置为 HOME。

我的问题是,如何允许我的应用退出。 当我的应用程序退出时,是否可以返回实际的家? 如果没有,是否有更好的方法来解决这个主页问题(即禁用主页按钮而不是实际将其设置为主页)?

您安装了多个 HOME 屏幕(设备制造商和您的应用程序提供的默认屏幕)。 用户必须选择您的应用程序应该是默认的主屏幕(这通常发生在启动时)。 您现在要做的是删除此“首选”设置,以便用户可以选择不同的“默认”主页屏幕(即:制造商的应用程序)。 这样做:

PackageManager pm = getPackageManager();
pm.clearPackagePreferredActivities ("your.package.name");

然后finish()你的MainActivity


编辑:替代解决方案

作为替代解决方案,当您想“退出”您的应用程序时,您只需启动默认的主屏幕即可。 为此,您需要知道默认主屏幕的包和类名并对其进行硬编码,或者您可以使用PackageManager扫描该信息,如下所示:

PackageManager pm = getPackageManager();
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> infoList = pm.queryIntentActivities(homeIntent, PackageManager.MATCH_DEFAULT_ONLY);
// Scan the list to find the first match that isn't my own app
for (ResolveInfo info : infoList) {
    if (!"my.package.name".equals(info.activityInfo.packageName)) {
        // This is the first match that isn't my package, so copy the
        //  package and class names into to the HOME Intent
        homeIntent.setClassName(info.activityInfo.packageName,
                       info.activityInfo.name);
        break;
    }
}
// Launch the default HOME screen
startActivity(homeIntent);
finish();

在这种情况下,您的应用程序仍设置为默认的 HOME 屏幕,因此如果用户再次按下 HOME 键,您的应用程序将被启动。 但是用户可以“退出”您的应用程序以再次返回到原​​始主页屏幕。

您可以使用 Android 5.0 中引入的设备所有者功能来全面管理 Android 设备并将其用作信息亭。 除其他外,这允许您通过点击主页按钮来防止用户退出应用程序。

设置设备所有者信息亭的最简单方法是使用Android 管理 API并配置信息亭策略

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM