阻止所有方式关闭Android应用程序

时间:2013-05-02 08:25:35

标签: android locking

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

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

除了要求输入密码的按钮/偏好设置菜单外,我将阻止关闭应用的所有方式。

但是经过一些研究我不是sur这可能我的意思是长按电源按钮仍然工作,家庭按钮也返回buton。所以问题是这是可能的,如果它是如何?

5 个答案:

答案 0 :(得分:5)

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

Home Button

Return Button

Power Button

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

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