我正在尝试开发Android平板电脑的应用程序。
此平板电脑将向公众展示,他们可以触摸它。
除了要求输入密码的按钮/偏好设置菜单外,我将阻止关闭应用的所有方式。
但是经过一些研究我不是sur这可能我的意思是长按电源按钮仍然工作,家庭按钮也返回buton。所以问题是这是可能的,如果它是如何?
答案 0 :(得分:5)
答案 1 :(得分:3)
我很确定如果没有对设备的root访问权限就无法完成此操作,以避免troll应用程序在你碰巧运行它时控制你的Android设备。
答案 2 :(得分:1)
您无法阻止用户按Home Button
你可以阻止Back press event。
您可以阻止用户使用onAttachedToWindow()
按住主页按钮,但这可能不适用于 android 3.2
答案 3 :(得分:1)
我终于找到了这样做的方法
没有关于此的文档
getWindow()getDecorView()setSystemUiVisibility(8);
但是8是一个隐藏的标志,可以完全禁用系统UI,你的应用程序是全屏显示的(如果你使用这个,请小心保持关闭app的方法) 8标志完全没有记录,所以我不能告诉你,因为版本这项工作我开发4.0和4.1它适用于两者。 Dunno for 3.0但没有任何设备可以尝试。
不要忘记清单中的android.permission.EXPAND_STATUS_BAR
这不是完美的,因为如果你使用一些警报对话,systemUi会变得可见但是如果你不使用任何你不能戒掉 长按功率使得制造系统ui的powerpopup也是可见的
但你可以通过以下方法快速杀死它
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(!hasFocus) {
Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(closeDialog);
}
}
如果你这样做了,你就不能再退出你的应用了(或者我已经忘记了关闭它的方法了吗?)所以请记住之前做SureLock之类的东西(可以在playstore上使用app),3触摸2日发起一项要求通行证退出的活动
希望这可以提供帮助并且已经完成
最后一个问题仍未得到解决 我们可以自定义一个警报视图来调用setSystemUiVisibility(8);因为如果电池发出警报或者您认为自己确实需要警报,则会在警报可见时显示系统UI
答案 4 :(得分:1)
首先,您需要从清单中将您的应用程序添加为主页
<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();
}
运行后,您需要将应用程序设置为家庭应用程序!!!