Android应用 开机自启动

为了解决项目中应用程序开机自启动问题,搭建了一个小demo,用于学习这个开机自启动的问题;

参考博客:

https://blog.csdn.net/qq_34897442/article/details/52263384

Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.int的问题可以参考:https://blog.csdn.net/chengfu116/article/details/74636977

有大牛写了个AutoStart的库:https://github.com/csq20081052/AutoStarter


demo工程各部分代码如下:

AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ciky.bootstartup">
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

    <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=".BootBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

        </receiver>
    </application>

</manifest>

新建一个广播接收器取名为BootBroadcastReceiver.java,其代码如下:

BootBroadcastReceiver.java

package com.ciky.bootstartup;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class BootBroadcastReceiver extends BroadcastReceiver {

    static final String ACTION="android.intent.action.BOOT_COMPLETED";

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        if(intent.getAction().equals(ACTION)){

            Log.d("ciky","接收器接受到开启完成广播!"+intent.getAction());
            System.out.println("自启动程序即将执行!");

            Intent mainActivityIntent=new Intent(context,MainActivity.class);
            mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainActivityIntent);
        }
    }
}

MainActivity.java

package com.ciky.bootstartup;

import android.support.v4.widget.TextViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv=new TextView(this);
        tv.setText("Hello,Main");
        setContentView(tv);
    }
}

会产生如下结果——

扫描二维码关注公众号,回复: 4745603 查看本文章

接收器接受到开启完成广播!android.intent.action.BOOT_COMPLETED

自启动程序即将执行!

猜你喜欢

转载自blog.csdn.net/c20081052/article/details/85600185