Sam*_*Sam 6 android kiosk kiosk-mode
我正在为自助服务终端模式编写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>
Run Code Online (Sandbox Code Playgroud)
一切都运作良好.但是当用户尝试退出(即用户以管理员身份登录)时,我的应用程序又回来了.我怀疑是因为我把它设为HOME.
我的问题是,如何允许我的应用程序退出.当我的应用程序退出时,是否可以返回实际的家?如果没有,是否有更好的方法来解决这个家庭问题(即禁用主页按钮,而不是实际设置为家)?
您安装了多个HOME屏幕(默认设置由设备制造商和您的应用程序提供).用户必须选择您的应用程序应该是默认的HOME屏幕(这通常在启动时发生).您现在要做的是删除此"首选"设置,以便用户可以选择不同的"默认"HOME屏幕(即:制造商的应用程序).这样做:
PackageManager pm = getPackageManager();
pm.clearPackagePreferredActivities ("your.package.name");
Run Code Online (Sandbox Code Playgroud)
然后finish()你的MainActivity.
编辑:替代解决方案
作为替代解决方案,当您想要"退出"您的应用时,您只需启动默认的HOME屏幕.要做到这一点,您需要知道默认HOME屏幕的包和类名以及硬编码,或者您可以使用以下方法扫描该信息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();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您的应用程序仍设置为默认的HOME屏幕,因此如果用户再次按HOME键,您的应用程序将启动.但是,用户可以"退出"您的应用程序以再次返回原始HOME屏幕.
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |