在不创建自己的自定义 Android rom 来删除底部按钮的情况下,您最好的解决方案是使应用全屏显示,覆盖后退按钮,并使您的应用成为启动器以覆盖主页按钮。
AFAIK,没有办法覆盖最近的应用程序按钮。
编辑:另一种选择是拥有一个全屏应用程序,然后使用覆盖按钮的支架。(感谢 MaciejGórski 的想法)。
要使您的应用全屏显示,请将以下内容放入您的活动中onCreate()
:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
或者您也可以在清单中使应用全屏显示,这要感谢@Niels:
<application android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
要覆盖后退按钮,请添加此方法:
@Override
public void onBackPressed() {
return;
}
现在主页按钮变得更加棘手,将以下内容添加到您的清单中:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
这到你的清单下<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>
并将其添加到您的清单中<application>
,确保<receiver name>
是您定义的完整包名称路径:
<receiver android:name="com.example.BootCompleteReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
最后,创建一个名为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);
}
}
要稍后禁用您的应用程序作为主屏幕启动器,请按最近的应用程序按钮,从右侧向下滑动,点击设置,转到应用程序,然后点击右上角的三个点(垂直对齐),按“重置应用程序首选项”,然后最后按“重置应用程序”。
我认为这应该涵盖所有内容。
编辑 2我刚刚意识到/测试过,如果你让你的应用程序成为启动器,你不一定需要这个BOOT_COMPLETED
意图。这意味着不需要<uses-permission>
,<receiver>
和BootComplete.java
您可以只使用<intent-filter>
包含 MAIN、HOME 和 DEFAULT 属性的 。
编辑 3此处提供更多/不同信息: Home Launcher issue with Fragments after reboot