Android實現(xiàn)應(yīng)用的開機啟動
效果是在車載屏幕實現(xiàn)的,并不是手機坑律,我這塊沒找到6.0以下手機岩梳,所以用的模擬機測試(在下面),6.0以上的手機貌似不管用晃择,我在試試...
獻上效果圖
zidong2.gif
本文摘自:
https://blog.csdn.net/qq_24712507/article/details/108572758
https://blog.csdn.net/jez/article/details/85762212
https://blog.csdn.net/qq_24712507/article/details/108572758
實現(xiàn)邏輯:
攔截廣播android.permission.RECEIVE_BOOT_COMPLETED冀值,并且需要使用靜態(tài)注冊廣播的方法
上代碼:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.statebarandnavigationbarhide_demo"
>
<!-- android:installLocation="internalOnly" 應(yīng)用安裝位置手機本身-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- <uses-permission android:name="android.permission.READ_SETTINGS" />-->
<!-- <uses-permission android:name="android.permission.WRITE_SETTINGS" />-->
<!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>-->
<!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- android:usesCleartextTraffic="true"-->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".MyReceiver">
<!-- enabled 能否接收其他APP發(fā)出的廣播
默認值是由receiver中是否有intent-filter來決定的;如果有true宫屠,沒有false-->
<!-- <intent-filter android:priority="1000">-->
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
廣播
package com.example.statebarandnavigationbarhide_demo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/**
* @auther eerdunsang
* @date 2020/12/3
* @time 9:39.
*/
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("tag", "onReceive: "+"廣播調(diào)起來了");
String ACTION = "android.intent.action.BOOT_COMPLETED";
String action = intent.getAction();
if (action.equals(ACTION)){
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Log.i("tag", "onReceive: "+"通過廣播監(jiān)聽權(quán)限啟動項目");
}
}
}
Activity
package com.example.statebarandnavigationbarhide_demo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this, "啟動了", Toast.LENGTH_SHORT).show();
Log.i("tag", "onCreate: "+"開機啟動了");
}
}
帖子很多照樣摘下來發(fā)現(xiàn)還是不能實現(xiàn)列疗,最后添加了網(wǎng)絡(luò)權(quán)限之后才實現(xiàn)了,具體沒去追究浪蹂。在調(diào)試時候沒有實現(xiàn)功能的可以把注解解開一個個試試抵栈。
原文下載demo:github
我又找到一個比較簡單的 補上!坤次! 手機版9啪ⅰ! 測試模擬器 Nexus
image.png
image.png
有點不清楚 設(shè)備是5.1.1的
代碼比上面的簡單
Nexus5.1.1 效果圖
開機啟動.gif
同樣我 下載了Nexus 6.0 效果同上g趾铩产艾!
image.png
image.png
這是pixel 8.0 效果
image.png
開機啟動_Pixel_8.0.gif
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 代碼部分↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
image.png
activity 什么也沒寫
image.png
廣播監(jiān)聽
package com.phone.autostartdemo.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class StartReceiver extends BroadcastReceiver {
private String TAG = "StartReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "onReceive-------");
Intent i = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
context.startActivity(i);
}
}
清單文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.phone.autostartdemo">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".receiver.StartReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.HOME"/>
</intent-filter>
</receiver>
</application>
</manifest>