禁用Nexus 7上的所有主页按钮和任务栏功能

dan*_*ibb 2 android operating-system nexus-7

我正在构建一个应用程序,它将成为展览的一部分.它将显示在可以安全安装的Nexus 7上.该应用程序具有触摸屏功能,将显示交互式内容.

我需要能够在显示时禁用尽可能多的功能,因为我不希望公众能够获得除应用程序之外的任何其他功能.

我正在努力的主要是back/home/recent app list按钮.我找到了一些禁用主页按钮的例子(儿童锁Android - 是否可以禁用主页按钮的点击 )但理想情况下我需要按钮是不可见的,所以要关闭'发光'(黑色会很好).

Nexus 7的底部是否以某种方式受到保护,是否有其他版本的Android可以让我这样做?Nexus设备仅用于显示此应用,不需要其他功能.

任何建议都会很棒,非常感谢.

Tro*_*omB 9

没有创建自己定制的Android ROM,除去底部的按钮,你最好的解决方案,将是使应用程序全屏,覆盖后退按钮,使您的应用程序的启动,以覆盖home键.

AFAIK,没有办法覆盖最近的应用程序按钮.

编辑:另一个选项是拥有一个全屏应用程序,然后使用一个覆盖按钮的安装.(感谢MaciejGórski的想法).

要全屏显示您的应用,请在您的活动中添加以下内容onCreate():

requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)

或者你也可以在清单中全屏显示应用程序,感谢@Niels:

<application android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
Run Code Online (Sandbox Code Playgroud)

要覆盖后退按钮,请添加以下方法:

@Override
public void onBackPressed() {
    return;
}
Run Code Online (Sandbox Code Playgroud)

现在主页按钮比较棘手,将以下内容添加到清单中:

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Run Code Online (Sandbox Code Playgroud)

以下是<activity>:

<intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

这个到你的清单下<application>,确保<receiver name>你定义的完整包名路径:

<receiver android:name="com.example.BootCompleteReceiver">
   <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />
   </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

最后,创建一个名为BootCompleteReceiver的java类文件,并使用以下代码:

public class BootCompleteReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Intent startActivityIntent = new Intent(context, YourActivityName.class);
    startActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(parentActivityIntent);
  }
}
Run Code Online (Sandbox Code Playgroud)

要在以后禁用您的应用程序的主屏幕发射器,按近期的应用按钮,从右侧向下滑动,点击设置,进入应用程序,然后点击右上角的三个点(垂直排列),按"复位应用程序首选项",然后最后按"重置应用程序".

我认为这应该只是涵盖所有.

编辑2我刚刚实现/测试过,BOOT_COMPLETED如果您将应用程序作为启动器,则不一定需要意图.这意味着<uses-permission>,<receiver>和BootComplete.java没有必要的.您可以使用<intent-filter>包含MAIN,HOME和DEFAULT属性的.

编辑3此处提供了更多/不同的信息:主机启动器在重启后出现碎片问题