12

我正在尝试为 Android 平板电脑开发应用程序。

这个平板电脑将向公众展示,他们可以触摸它。

我想阻止所有关闭应用程序的方法,但需要密码的按钮/首选项菜单除外。

但经过一些研究,我不确定这是否可能。长按电源按钮仍然有效,主页按钮和返回按钮也可以。这行得通吗?如果是这样怎么办?

4

5 回答 5

6

您可以在 stackoverflow 中已提出的问题中找到所有答案

主页按钮

返回按钮

电源按钮

于 2013-05-02T08:31:06.147 回答
3

我很确定如果没有对设备的 root 访问权限,这将无法完成,以避免在您碰巧运行 Android 设备时被巨魔应用程序控制。

于 2013-05-02T08:29:37.023 回答
3

首先,您需要从清单中将您的应用程序添加为主页

<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();
    }

运行后,您需要将您的应用程序设置为家庭应用程序!!!

于 2017-09-01T11:53:36.813 回答
2

我终于找到了一种方法来做到这一点

没有关于此的文档

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

于 2013-06-06T07:36:20.837 回答
0

只是你不能这样做,你不能阻止用户按下Home Button

您可以阻止 Back press 事件。

您可以使用阻止用户按下主页按钮,onAttachedToWindow()但这可能不适用于android 3.2

于 2013-05-02T08:32:42.497 回答