精华内容
下载资源
问答
  • 在一个移动设备中安装了多个应用程序,其中自己开发的应用需要实现开机自启动这么个功能; 为了实现自己应用能够实现自动启动,最初的思路是监控设备的开机完成这类的广播信号;   思路一(开机自启动): 注册...

    最近遇到这么个问题:

    在一个移动设备中安装了多个应用程序,其中自己开发的应用需要实现开机自启动这么个功能;

    为了实现自己应用能够实现自动启动,最初的思路是监控设备的开机完成这类的广播信号;

     

    思路一(开机自启动):

    注册一个静态广播去监听开机启动完毕的广播,然后在接听到开机广播完毕后启动|Activity或者Service;

    其中广播监听器中内容为:

    public class BootCompletedReceiver extends BroadcastReceiver {
    
        private static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
     
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ACTION_BOOT_COMPLETED)){
                Intent intent=new Intent(context,MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);
            }
        }
    }

    必须强调下如果没有设置标记 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

    如果不添加这句,就会报 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity,Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

    然后在AndroidManifest.xml静态注册该广播:

    <receiver android:name=".BootCompletedReceiver">
            <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
            </intent-filter>
    </receiver>

    然后在AndroidManifest.xml申请权限:

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

    通过以上的方法,可以实现开启启动APP,但是,这个方法有问题,以上的方法必须要在安装APP后,手动运行一次APP后,APP才能接收到android.intent.action.BOOT_COMPLETED广播。

     

    然而以上的解决思路在Android 3.1之后有了变更;

    APP接收不到BOOT_COMPLETED广播可能的原因,有以下几种:

    1. BOOT_COMPLETED对应的actionuses-permission没有一起添加
    2. 应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的
    3. 系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播
    4. 应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETEDACTION_PACKAGE_ADDEDCONNECTIVITY_ACTION等等。

    Android3.1之后,系统为了加强了安全性控制,应用程序安装后或是(设置)应用管理中被强制关闭后处于stopped状态,在这种状态下接收不到任何广播,除非广播带有FLAG_INCLUDE_STOPPED_PACKAGES标志,而默认所有系统广播都是FLAG_EXCLUDE_STOPPED_PACKAGES的,所以就没法通过系统广播自启动了。
    所以Android3.1之后:

    1. 应用程序无法在安装后自己启动
    2. 没有ui的程序必须通过其他应用激活才能启动,如它的Activity、Service、Content Provider被其他应用调用。

    不过,存在一种例外,就是应用程序被adb push you.apk /system/app/下是会自动启动的,不处于stopped状态。解决方式就是将APK推送到/system/app目录下,或者打包系统时,将APK放置到/system/app中打包

     

    结论是: 我没法将自己的应用安装到系统路径下,无root权限,即无法通过监控开机完成这个广播信号实现自启动了;那么采用思路二;

     

    思路二(其他应用通知启动):

    通过其他应用(命名为应用A)发送特定广播信号,我只需监控应用A发送的广播信号即可实现自启动了;

    实现:A应用中的Activity发送广播,关键代码如下:

           

    String broadcastIntent = "com.example.BootUp";//自己自定义
           Intent intent = new Intent(broadcastIntent);
           this.sendBroadcast(intent);

    B应用中需要一个BroadcastReceiver来接收广播,取名MyReceiver继承BroadcastReceiver重写onReceive方法启动一个activity,关键代码如下:   

    if(intent.getAction().equals("com.example.BootUp")){
            Intent intent = new Intent(context,MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
    }

    在AndroidManifest.xml中要对MyReceiver进行注册,代码如下:

         <receiver android:name="MyReceiver">
                 <intent-filter>
                      <action android:name="com.example.BootUp"/>
                </intent-filter>
        </receiver>

    这样就完成了通过应用A发送的广播启动另一个应用B中的Activity了(上面代码中Activity默认命名为MainActivity)。

    注意问题:Context中有一 个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用 Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新 的task,解决办法是,加一个flag,也就是这句 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);的作用。

     

     

    开机自启动问题参考:https://segmentfault.com/q/1010000015837899

    广播receiver中启动Activity参考:https://blog.csdn.net/u014005316/article/details/53671673

                                                         https://www.cnblogs.com/zhujiabin/p/4262049.html

     

    展开全文
  • 我发现有些软件可以列出所有自启动应用,并且可以对其进行 启用 和 停用 的操作。并且可以判断出是否被禁用或者启用。 是怎么实现的呢? 好像不是自己软件做的标识,例如 我用A软件 禁用了a应用的开机...
  • Docker容器内应用服务自启动

    万次阅读 多人点赞 2016-09-07 14:40:24
    Docker容器内应用服务自启动如果想把Docker容器内的应用服务随着容器开启时自启动。只需要将服务启动的脚本写在Dockerfile里,然后用Dockerfile重构镜像即可实现: 编写应用服务自启动脚本 编写Dockerfile 重构镜像 ...

    Docker容器内应用服务自启动

    如果想把Docker容器内的应用服务随着容器开启时自启动。只需要将服务启动的脚本写在Dockerfile里,然后用Dockerfile重构镜像即可实现:

    • 编写应用服务自启动脚本
    • 编写Dockerfile
    • 重构镜像
    • 开启容器

    编写服务自启动脚本(dockerd)

    (tomcat为例)

    #!/bin/bash
    #
    # 
    #
    # chkconfig: 345 98 30
    # description:  tomcat program.
    # processname: tomcat
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    #. /etc/sysconfig/network
    
    
    prog="tomcat"
    
    checkprocess()
    {
        chkret=`ps -ef |grep $prog |grep -v "grep" |wc -l`
            return $chkret
    }
    
    start()
    {
            cd /usr/local/tomcat/bin/
         ./startup.sh
        echo "Service $prog started!"
    }
    
    #/usr/sbin/nscd  &
    /usr/sbin/sshd -D &
    while [ true ]
    do
                    DNSIP=172.18.3.179
                        ping=`ping -c 3 $DNSIP|awk 'NR==7 {print $4}'`
                    if [[ $ping -eq "3" ]]
                    then
                            break
                    fi
            sleep 3
    done
    
    while [ true ]
    do
            checkprocess
              if [[ $chkret -eq "0" ]]
                    then
                               start
              #nscd -i hosts
                    else 
                        echo "Service $prog is running."
    
                    fi
            sleep 60
    done
    
    
    exit 0

    编写Dockerfile

    FROM  tomcat
    
    
    MAINTAINER liu "350142639@qq.com"
    
    
    
    ADD dockerd  /etc/rc.d/init.d/
    RUN chmod 777  /etc/rc.d/init.d/dockerd
    
    ENV JAVA_HOME  /usr/local/jdk1.6.0_30
    ENV PATH      $JAVA_HOME/bin:$PATH
    ENV CLASSPATH   .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    
    
    
    CMD /etc/rc.d/init.d/dockerd

    其中,ADD将同级目录下的脚本加入镜像的指定位置,ENV设置java的环境变量(很重要,不写这句自启动脚本无法执行成功)CMD命令只能有一个,用来在容器启动时,执行命令。也可以是脚本。

    重构镜像

    **通过
    docker build -t 新的镜像名 .
    成功制作新的镜像

    开启容器

    docker run -d -h=”s” –name=”s” 新的镜像名

    然后,发现tomcat已经开启、

    展开全文
  • 上一篇通过WinForm+C#代码实现控制应用程序自启动功能,这篇讲下在不用代码情况下是如何利用电脑启动项来设置开机自启动。...3、在启动项文件夹添加需要启动快捷方式 4、添加自启动启动完成 Author : 付义方

    上一篇通过WinForm+C#代码实现控制应用程序自启动功能,这篇讲下在不用代码情况下是如何利用电脑启动项来设置开机自启动,这也是一个很实用的技巧哦。我这里主要通过截图展示如何添加QQ自启动实现,当然我这里只是举例说明,其他应用程序设置同理。
    具体实现步骤如下图:
    开始菜单栏找到启动目录
    找到启动项
    右键菜单打开启动项文件夹
    打开启动项
    在 启动项文件夹添加需要启动快捷方式
    添加要启动程序的启动快捷
    添加自启动启动完成
    自启动添加完成

    以上步骤设置完成,小伙伴快快重启电脑看看效果吧~

    下次电脑重启就可以看到你设置的程序自启动了~

    希望以上分享对初学朋友有些帮助,谢谢!
    更多关注付义方技术博客:http://blog.csdn.net/fuyifang
    或者直接用手机扫描二维码查看更多博文:
    付义方CSDN博客二维码
    Author : 付义方

    展开全文
  • Android 开机自启动应用

    千次下载 热门讨论 2012-11-29 20:37:48
    Android 开机自启动应用, BOOT_COMPLETED
  • android开机应用与service开机自启动配置: 1.在AndroidManifest.xml中添加如下内容: (1)在application中添加receiver: application android:allowBackup="true" android:icon="@drawable/ic_launcher" ...

    android开机应用与service开机自启动配置:

    1.在AndroidManifest.xml中添加如下内容:

    (1)在application中添加receiver:

    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
    
    	<receiver android:name=".SlptServiceInstalledReceiver" >
    	    <intent-filter android:priority="1000" >
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                    <action android:name="android.media.AUDIO_BECOMING_NOISY" />
                </intent-filter>
    	</receiver>
    
    </application>

    (2)添加权限:

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


    2.创建一个监听开机广播的类SlptServiceInstalledReceiver(我这里因为开机广播来的比较迟,所以监听了一个开机声音的广播):

    (1)服务开机自启动:

    package com.ingenic.iwds.slptservicedemo;
    
    import com.ingenic.iwds.slpt.SlptClockService;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    public class SlptServiceInstalledReceiver extends BroadcastReceiver{
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		if (intent.getAction().equals("android.media.AUDIO_BECOMING_NOISY")) {
                            /* 服务开机自启动 */
                            Intent service = new Intent(context, SlptClockService.class);
    			context.startService(service);
                    }
    	}
    }
    

    (2)应用开机自启动:

    package com.ingenic.iwds.slptclientdemo;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    public class SlptClientInstalledReceiver extends BroadcastReceiver {
    	String TAG = "slptClient";
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
                            /* 应用开机自启动 */
    			Intent intent_n = new Intent(context,
    					SlptClientDemoMainActivity.class);
    
    			intent_n.setAction("android.intent.action.MAIN");
    			intent_n.addCategory("android.intent.category.LAUNCHER");
    			intent_n.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    			context.startActivity(intent_n);
    		}
    	}
    }

    注意:我直接使用eclips进行Install服务自启动接收不到广播,但使用adb push到/system/priv-app中就可以!!!














    展开全文
  • flutter app安卓应用开机自启动

    千次阅读 2019-05-27 11:20:25
    本人没学过原生安卓开发,从web开发...app当然用flutter了,但是自启动呢? so 从网上找了原生的一些开发经验,发现可以直接在flutter使用。 下面进入正题。 1.首先得有个flutter项目。(新建项目大家应该都会了,...
  • Qt 设置应用程序开机自启动

    万次阅读 2019-08-21 14:11:20
    要实现开机自启动,主要是将应用程序添加到注册表中。 一、首先定义注册表 #define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" 二、编写开机自启动设置函数 //开机...
  • Menu 首页 源码解析 ...Android应用如何开机自启动...本文主要介绍Android应用如何开机自启动自启动失败的原因、adb命令发送BOOT_COMPLETED。 问题:应用程序是否可以在安装后自启动,没有ui的纯service应
  • 自启动失败的原因 接收不到BOOT_COMPLETED广播可能的原因
  • C# 设置应用程序开机自启动

    千次阅读 2019-04-25 15:26:11
    将当前应用程序的应用程序文件添加到注册表中,实现开机自启动 using Microsoft.Win32; using System; namespace TestAutoRun { class Program { static void Main(string[] args) { ...
  • 本文主要讲述WinForm开发应用程序需要设置自启动功能,这个也是在实际开发中经常涉及到的,非常实用,所讲到的是通过注册表来控制程序是否自行启动,具体功能实现上两张图,更直观。 如下图:程序设置保持界面实现...
  • WPF应用开机自启动编程实现

    千次阅读 2016-06-30 11:36:28
    不论是WinForm程序还是WPF程序,实现开机自启动的原理都是向注册表...手动编辑注册表实现应用程序开机自启动请查看下面文章: [如何让应用程序在开机后自动启动?] C#程序实现1.判断注册表键值对是否存在 private bool
  • Android 9(P)中实现应用开机自启动(前台服务的方式) 文章目录Android 9(P)中实现应用开机自启动(前台服务的方式)问题1:开机之后没有收到BOOT_COMPLETED广播问题2:启动APP时直接报错问题3:无法启动service...
  • LINUX、docker容器应用服务自动启动脚本vi /run.sh编辑如下:#!/bin/bash# Export environment variablesource /etc/profile#start tomcatsh /opt/tomcat/bin/catlina.sh run &amp;编辑环境变量:vi /etc/...
  • 应用开机自启动的原理是监听开机广播android.intent.action.BOOT_COMPLETED,然后在BroadcastReceiver中打开应用 实现BroadcastReceiver 首先实现一个BroadcastReceiver,该广播接收者监听"android.intent.action....
  • Android定时自动启动应用程序

    千次阅读 2018-11-14 08:15:02
    Android定时自动启动应用程序
  • WinCE下应用程序开机自启动

    千次阅读 2016-07-21 15:44:51
    在嵌入式设备中通常开机启动后会要求直接显示应用程序界面,而不是系统桌面,甚至为了避免客户随意或者无心修改到应用或者其他配置,是需要隐藏桌面的,本文就介绍在WinCE下开机自启动应用程序的相关设置。...
  • Linux下的应用程序开机自启动

    千次阅读 2014-10-23 15:46:46
    Linux下的应用程序开机自启动
  • 安卓篇.安卓应用实现开机自启动

    千次阅读 2019-03-27 17:33:23
    安卓应用实现开机自启动步骤第一步(IndexActivity是我应用的启动页面,大家替换成自己的启动页面)第二步(注册静态广播接收者)第三步(添加权限) 步骤 编写广播接收者,监听对应的意图行为,并进行逻辑处理; ...
  • 1. 安卓应用如何设置为开机自启动? (1). 首先在AndroidManifest.xml中注册自启动的权限及action.               (2). 创建receiver类接收广播. public class BootCompleteReceiver exte
  • 每次容器运行时还要进入正在运行的容器内启动应用服务。进入正在运行的容器中执行以下命令: $ docker exec -it -d XXX /bin/bash 其中: -d 后台运行 XXX 容器的名字 /bin/bash 以交互的方式运行容器 测试环境安装...
  • Android应用实现安装后自启动

    千次阅读 2017-11-21 14:29:56
    ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程序不能接收到这个广播) ACTION_PACKAGE_REPLACED 一个新版本的应用安装到设备,替换之前已经存在的版本 ACTION_PACKAGE_CHANGED ...
  •  2015年1月26日 小恐龙 应用技巧 前言简述 Android生态系统原本提供了类似于Apple iOS推送服务APNS的GCM(Google Cloud Messaging for Android),以前叫C2DM,但是由于某些原因,导致这项服务在国内不是很好使...
  • 嵌入式linux开机应用程序自启动

    千次阅读 2017-08-11 22:17:45
    ...由/etc/init.d/rcS-->/etc/init.d/rc知道,需要添加的程序可修改rc文件即可。 在rc末尾添加如下: # Add By Qiuweibo 2014.5.21 start if [ -e /etc/init.d/user.sh ]; then  
  • linux上电自启动应用程序详解

    千次阅读 2016-03-10 17:13:43
    每当我学习一个新的东西得时候都是会 遇到一些错误,但是我会非常努力的去解决它,今天这个自启动应用程序花了我两个小时的时间才解决了。所以说遇到问题的时候要去思考、分析。下面我就来谈谈linux上电自启动应用...
  • 如图所示 ![图片说明](https://img-ask.csdn.net/upload/201801/29/1517193805_901813.png) 这个自启动怎么用代码设置成默认开启啊

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,600,346
精华内容 640,138
关键字:

哪些应用需要自启动