2013-05-02 88 views
7

我想为Android平板电脑开发一个应用程序。阻止一切方式关闭Android应用程序

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

我会阻止一切方式关闭一个应用程序,除了要求输入密码的按钮/首选项菜单。

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

+0

为什么突然回答不被接受? – 2013-06-06 07:05:47

+0

我刚刚发现了一些可以让它成为可能的新功能,但是我根据自己的知识在发布 – Jebik 2013-06-06 07:16:04

+0

之前做了一些测试,如果您找到了方法,我们无法实现它,只需发布​​代码即可。 – 2013-06-06 07:30:58

回答

1

我终于找到了一个办法做到这一点

这个

getWindow没有DOC ().getDecorView()setSystemUiVisibility(8)。

但是8是一个隐藏的标志,完全禁用系统用户界面,这个你的应用程序是permanly在全屏幕(要小心,如果你使用这个保持关闭应用程序的方式) 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(应用avaible在Play商店中),3触碰2周的推出谁问了一通退出其

希望这可以帮助一个活动,是完整

和最后问题仍未解决 我们可以定制一个警报视图来调用setSystemUiVisibility(8);因为如果电池作一个警告,或者如果你觉得你真的需要一个警告,这将显示系统UI,同时提醒您注意可见

+0

我已经尝试过,但我能够按主页按钮。 – 2013-06-07 10:58:54

+0

什么是您的设备?我也可以在我的银河选项卡,但我已经将我的应用程序设置为默认主页,所以单击主页按钮什么也不做 – Jebik 2013-06-07 13:16:29

+0

我使用三星银河联系 – 2013-06-07 13:22:19

2

我敢肯定,如果没有root用户访问设备,为了避免巨魔应用程序控制您的Android设备,如果碰巧运行它,这是无法完成的。

+0

我可以成为root用户,但在此应用安装在很多设备上后,我不知道是否全部根本程序可以由客户端... – Jebik 2013-05-02 08:38:11

3

,你可以找到所有的答案中已经问过的问题计算器

Home Button

Return Button

Power Button

+0

是的,我搜索一些,但他们说不可能的一些,为什么我要求禁用所有如果有人知道这样做 – Jebik 2013-05-02 08:37:00

1

只要你不能做到这一点,你不能阻止用户冲压Home Button

你可以阻挡背部按压事件。

您可以按使用onAttachedToWindow() HOME按钮停止用户,但这可能无法从工作Android 3.2的

0

首先你需要在你的应用程序从你的清单

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

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