android实现程序开机自启动

摘要:
“,Toast.LNGTH_LONG).show();Log.e(”AutoRun“,”哈哈,我成功启动了!“) ;}} 3.在手机上安装应用程序,然后启动程序一次。4.重新启动手机,测试应用程序是否自动启动。首先,请检查您的手机是否安装了360等安全软件。如果安装了,请在软件的自启动软件管理中设置应用程序以重新启动手机,以测试是否成功。如果仍然失败,请检查您的手机是否已将SD卡设置为应用程序安装的首选位置。据称,SD卡是在手机成功启动后加载的,因此应用程序无法接收广播。如果是,请尝试将应用程序安装到内部存储中。

在安卓中,想要实现app开机自动启动,需要实现拦截广播android.permission.RECEIVE_BOOT_COMPLETED,并且需要使用静态注册广播的方法(即在AndroidManifest.xml文件中定义广播)

1、先在AndroidManifest.xml文件中定义广播和声明权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

<receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="1000">
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            </intent-filter>
</receiver>

上面的MyReceiver是我自己写的类,继承了BroadcastReceiver的,代码如下:

public class MyReceiver extends BroadcastReceiver
{
    public MyReceiver()
    {
    }

    @Override
    public void onReceive(Context context, Intent intent)
    {
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
        {
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }
}
上面的 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 非常重要,如果缺少的话,程序将在启动时报错

2、以下是MainActivity类的代码           

public class MainActivity extends ActionBarActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toast.makeText(this, "哈哈,我成功启动了!", Toast.LENGTH_LONG).show();
        Log.e("AutoRun","哈哈,我成功启动了!");
    }
}

3、安装app到手机上,然后启动一次程序(据说安卓4.0以后,必须先启动一次程序才能接收到开机完成的广播,目的是防止恶意程序)

4、重启手机,测试app有没有自动启动。如果有,那么恭喜你。如果没有,请往下看。

如果按照上面的全部步骤后操作后,重启没有自动启动程序,怎么办呢?是怎么回事呢?那么首先请检查一下你的手机是不是安装了360之类的安全软件,如果有,请在软件的自启动软件管理中将app设置为【允许】(我的手机没有安装这些软件,但是系统设置里面自带了自启动软件管理的功能 ,所以我在这里将我的app设置为【允许开机启动】),重启手机,测试是否成功。如果还是失败,那么请检查你的手机是不是设置了app安装首选位置是sd卡,据说安装到sd卡的话,因为手机启动成功后(发送了启动完成的广播后)才加载sd卡,所以app接收不到广播。如果是的话,把app安装到内部存储试试。如果不懂得设置的话,那么直接在AndroidManifest.xml文件中设置安装路径,android:installLocation="internalOnly"。比如:

<manifest
    package="cn.weixq.autorun"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="internalOnly">

免责声明:文章转载自《android实现程序开机自启动》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Sanic九:Sanic.url_for和静态文件Python_实现json数据的jsonPath(精简版)定位及增删改操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

build-essential

linux操作系统上面开发程序, 光有了gcc 是不行的它还需要一个 build-essential软件包作用是提供编译程序必须软件包的列表信息 也就是说 编译程序有了这个软件包它才知道 头文件在哪 才知道库函数在哪还会下载依赖的软件包 最后才组成一个开发环境当然 build-essential包 安装时 需要的依赖包 有些你用不上 软件包: build-...

Android APP性能测试笔记(一)

Android APP性能测试笔记(一) (1)工具使用       Android Studio  GT, root的真机 (2)记录apk大小(对比竞品)       使用Android Studio导入需要测试的apk 导入后,页面显示apk的大小   如果希望可以优化前后apk进行对比   (3)启动时间   冷启动:无数据的首次启动;...

命名空间(app_name)和实例命名空间(namespace)

先把官网上对应用命名空间(app_name)和实例命名空间(namespace)的解释贴上: app_name(应用命名空间)通常在app.urls模块中指定,如: app_name = "test" //应用命名空间 urlpatterns = [ path("article1/", views.test, name="url_a"), ]...

什么是UML?

UML是统一建模语言,Unified Modeling Language的缩写 综合了面向对象的建模语言、方法和过程,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持 可以帮助沟通与交流、辅助应用设计、文档的生成、阐释系统的结构和行为 定义了多种图形化的符号来描述软件系统部分或全部的静态结构和动态结构 包括:用例图(...

[转]ODAC 应用技巧 (一)使用 ODAC 的 Net 方式

原文地址:ODAC 应用技巧 (一)使用 ODAC 的 Net 方式 使用 ODAC 的 Net 方式 nxyc_twz@163.com 大多数应用程序使用 OCI 的ODAC 标准方式来连接 Oracle 数据库服务器。这是使用第三方开发语言设计 Oracle 应用程序最常用的方法。 所有的 OCI 接口都作为内部库来使用,使得编译生成的应用程序非常小...

C#调用WebService

1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。 XML:(Extensible Mark...