QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

泡泡马甲APP 更多内容请下载泡泡马甲手机客户端APP 立即下载 ×
查看: 1661|回复: 0

[Android/IOS] Android广播实现App开机自启动

[复制链接]

等级头衔

积分成就    金币 : 2804
   泡泡 : 1516
   精华 : 6
   在线时间 : 1243 小时
   最后登录 : 2024-5-2

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老

联系方式
发表于 2022-5-16 23:04:38 | 显示全部楼层 |阅读模式
一、概括
3 j: ], S3 Q- Q9 L/ `       在安卓中,想要实现app开机自动启动,需要实现拦截广播android.permission.RECEIVE_BOOT_COMPLETED,并且需要使用静态注册广播的方法(即在AndroidManifest.xml文件中定义广播);
1 t/ G: v" q1 @1 H' C- X% N二、步骤# Y( L1 E. k- u$ E" P
1. 先在AndroidManifest.xml文件中定义广播和声明权限;
. S1 m  g  ~- K
  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
  2.   
  3. <receiver
  4.     android:name=".MyReceiver"
  5.     android:enabled="true"
  6.     android:exported="true">
  7.     <intent-filter android:priority="1000">
  8.         <action android:name="android.intent.action.BOOT_COMPLETED"></action>
  9.     </intent-filter>
  10. </receiver>
2. 自定义MyReceiver,继承BroadcastReceiver,代码如下:- F/ u7 z8 I" K% Q
  1. public class MyReceiver extends BroadcastReceiver
  2. {
  3.     public MyReceiver()
  4.     {
  5.     }
  6.   
  7.     @Override
  8.     public void onReceive(Context context, Intent intent)
  9.     {
  10.         if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
  11.         {
  12.             Intent i = new Intent(context, MainActivity.class);
  13.             i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  14.             context.startActivity(i);
  15.         }
  16.     }
  17. }
      注意:上面的 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 非常重要,如果缺少的话,程序将在启动时报错;- R6 b" i6 o# O) h2 U' x, O; C; a
3. 编写MainActivity类,代码如下:- I  E3 b3 L; |7 m$ D
  1. public class MainActivity extends ActionBarActivity
  2. {
  3.     @Override
  4.     protected void onCreate(Bundle savedInstanceState)
  5.     {
  6.         super.onCreate(savedInstanceState);
  7.         setContentView(R.layout.activity_main);
  8.   
  9.         Toast.makeText(this, "哈哈,我成功启动了!", Toast.LENGTH_LONG).show();
  10.         Log.e("AutoRun","哈哈,我成功启动了!");
  11.     }
  12. }
4. 安装app到手机上,然后启动一次程序(据说安卓4.0以后,必须先启动一次程序才能接收到开机完成的广播,目的是防止恶意程序)
! D8 x& j, y* u* R2 ~$ I5. 重启手机,测试app有没有自动启动。如果有,那么恭喜你。如果没有,请往下看。
5 K  m' y+ O) d& D       如果按照上面的全部步骤后操作后,重启没有自动启动程序,怎么办呢?是怎么回事呢?那么首先请检查一下你的手机是不是安装了360之类的安全软件,如果有,请在软件的自启动软件管理中将app设置为【允许】(我的手机没有安装这些软件,但是系统设置里面自带了自启动软件管理的功能 ,所以我在这里将我的app设置为【允许开机启动】),重启手机,测试是否成功。如果还是失败,那么请检查你的手机是不是设置了app安装首选位置是sd卡,据说安装到sd卡的话,因为手机启动成功后(发送了启动完成的广播后)才加载sd卡,所以app接收不到广播。如果是的话,把app安装到内部存储试试。如果不懂得设置的话,那么直接在AndroidManifest.xml文件中设置安装路径,android:installLocation="internalOnly"。比如:
: q! t: ]$ Y6 D8 X
  1. <manifest
  2.     package="cn.weixq.autorun"
  3.     xmlns:android="http://schemas.android.com/apk/res/android"
  4.     android:installLocation="internalOnly">
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号 )

GMT+8, 2024-5-4 00:08

Powered by paopaomj X3.4 © 2016-2024 sitemap

快速回复 返回顶部 返回列表