Android 5 设置应用开机启动 崩溃重启 隐藏/显示底部虚拟按键

Android 设置应用开机启动 崩溃重启 隐藏/显示底部虚拟按键

 

设置应用开机启动

两种方式可以实现

方式一:设置监听,在系统启动时,打开我们的应用

1. 新建 ContentReceiver 类

// 开机启动1/3
public class ContentReceiver extends BroadcastReceiver {
    static final String ACTION = "android.intent.action.BOOT_COMPLETED";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(ACTION)) {
            Intent mainActivityIntent = new Intent(context, MainActivity.class);  // 要启动的Activity
            mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainActivityIntent);
        }
    }
}

2. 在 app/manifests/AndroidManifest.xml 文件中添加如下代码:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.myapplication">	
	<application>		
	......
		<!--开机自启动 2/3-->
        <receiver android:name=".ContentReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.LAUNCHER" />
                <!--<category android:name="android.intent.category.HOME" />-->
            </intent-filter>
        </receiver>
	</application>
	<!--开机自启动 3/3-->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest>

 

方式二:将应用替换默认的桌面应用。这样的好处是可以屏蔽用户操作桌面,开机后只能进入我们的应用程序,保护系统安全性。

在 app/manifests/AndroidManifest.xml 文件中添加如下代码:

        <activity android:name=".MainActivity"
            android:configChanges="orientation|keyboard">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <!--以下两行为替换系统自带桌面,改为启动本 app -->
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

 

 

设置应用崩溃重启

代码如下:

public class MyApplication extends Application {
    private static MyApplication application;
    @Override
    public void onCreate() {
        super.onCreate();
        application = this;
        // 程序崩溃时触发线程  以下用来捕获程序崩溃异常
        Thread.setDefaultUncaughtExceptionHandler(handler);
    }
    private Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            System.out.println("应用奔溃,准备重启程序...");
            restartApp(); //发生崩溃异常时,重启应用
        }
    };
    private void restartApp() {
        Intent intent = new Intent(this, MainActivity.class);
        @SuppressLint("WrongConstant") PendingIntent restartIntent = PendingIntent.getActivity(
                application.getApplicationContext(), 0, intent,Intent.FLAG_ACTIVITY_NEW_TASK);
        //退出程序
        android.os.Process.killProcess(android.os.Process.myPid());
        //重启程序
        AlarmManager mgr = (AlarmManager)application.getSystemService(Context.ALARM_SERVICE);
        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000*1,
                restartIntent); // 1秒钟后重启应用
    }
}

 

 

隐藏/显示底部虚拟按键

隐藏底部虚拟按键:

public boolean hideNavigation(){
	boolean ishide;
	try
	{
		String command;
		command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib service call activity 42 s16 com.android.systemui";
		Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command });
		proc.waitFor();
		ishide = true;
	}
	catch(Exception ex)
	{
		Toast.makeText(getApplicationContext(),  ex.getMessage(),
				Toast.LENGTH_LONG).show();
		ishide = false;
	}
	return ishide;
}

 

显示底部虚拟按键:

public boolean showNavigation(){
        boolean isshow;
        String command;
        command  =  "LD_LIBRARY_PATH=/vendor/lib:/system/lib  am startservice -n com.android.systemui/.SystemUIService";
        Process proc = null;
        try {
            proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command });
            proc.waitFor();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        isshow = true;
        return isshow;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要彻底隐藏Android设备上的底部虚拟按键,您可以尝试以下两种方法: 方法一:使用全屏模式 通过使用全屏模式,您可以完全隐藏底部虚拟按键。以下是实现此目的的步骤: 1. 在您的Android应用程序中,打开您想要隐藏底部虚拟按键的活动。 2. 在该活动的onCreate()方法中添加以下代码: ```java View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); ``` 这将隐藏底部导航栏和状态栏。 3. 在该活动的onResume()方法中添加以下代码: ```java View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); ``` 这将确保当用户返回到该活动时,底部导航栏和状态栏仍然被隐藏。 方法二:使用系统UI调节器 使用系统UI调节器,您可以在整个Android设备上隐藏底部虚拟按键。以下是实现此目的的步骤: 1. 打开您的Android设备上的设置应用程序。 2. 寻找“开发者选项”并打开它。 3. 滚动到“绘画”部分,并找到“禁用虚拟按键”选项。启用此选项。 4. 按下设备上的电源键,然后再按下“禁用虚拟按键”选项。此时,底部导航栏将被隐藏。 请注意,使用该选项可能会导致一些应用程序无法正常工作。如果您遇到任何问题,请在开发者选项中禁用此选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值