我正在尝试为 Android 平板电脑开发应用程序。
这个平板电脑将向公众展示,他们可以触摸它。
我想阻止所有关闭应用程序的方法,但需要密码的按钮/首选项菜单除外。
但经过一些研究,我不确定这是否可能。长按电源按钮仍然有效,主页按钮和返回按钮也可以。这行得通吗?如果是这样怎么办?
我正在尝试为 Android 平板电脑开发应用程序。
这个平板电脑将向公众展示,他们可以触摸它。
我想阻止所有关闭应用程序的方法,但需要密码的按钮/首选项菜单除外。
但经过一些研究,我不确定这是否可能。长按电源按钮仍然有效,主页按钮和返回按钮也可以。这行得通吗?如果是这样怎么办?
我很确定如果没有对设备的 root 访问权限,这将无法完成,以避免在您碰巧运行 Android 设备时被巨魔应用程序控制。
首先,您需要从清单中将您的应用程序添加为主页
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.settings.SETTINGS" />
<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>
添加标志后
getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY); //(dont forget to add flag before `setContentView`)
禁用设备锁定
private void disableLock() {
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(MainActivity.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
}
禁用主页长按
@Override
protected void onUserLeaveHint() {
startActivity(new Intent(MainActivity.this,MainActivity.class));
finish();
super.onUserLeaveHint();
}
运行后,您需要将您的应用程序设置为家庭应用程序!!!
我终于找到了一种方法来做到这一点
没有关于此的文档
getWindow().getDecorView().setSystemUiVisibility(8);
但是 8 是一个隐藏标志,用于完全禁用系统 UI,您的应用程序永久全屏显示(如果您使用此方法关闭应用程序,请小心) 8 标志完全没有记录,所以我不能告诉你我为 4.0 和 4.1 开发了这项工作的版本,它适用于两者。不知道 3.0,但没有任何设备可以尝试。
并且不要忘记清单中的 android.permission.EXPAND_STATUS_BAR
这并不完美,因为如果您使用一些警告对话框,systemUi 变得可见,但如果您不使用任何您不能退出长按电源使 powerpopup 使系统 ui 可见
但是你可以用下面的方法快速杀死它
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(!hasFocus) {
Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(closeDialog);
}
}
如果您这样做,您将无法再退出您的应用程序(或者我忘记了关闭它的方法?)所以请记住,在制作SureLock(Playstore 上可用的应用程序)之类的东西之前,3touch in 2 s 启动一个询问的活动退出它的通行证
希望这可以帮助并且完成
最后一个问题仍未解决 我们可以自定义一个警报视图来调用 setSystemUiVisibility(8); 因为如果电池发出警报或者您认为您确实需要警报,这将在您看到警报时显示系统 UI
只是你不能这样做,你不能阻止用户按下Home Button
您可以阻止 Back press 事件。
您可以使用阻止用户按下主页按钮,onAttachedToWindow()
但这可能不适用于android 3.2