精华内容
下载资源
问答
  • Android 程序随开机自动运行

    万次阅读 多人点赞 2018-09-29 16:04:51
    因为业务需要,项目中需要实现 APP 跟随系统开机后自动运行,环境是:minSdkVersion 17、targetSdkVersion 28、Android Studio 3.1.2,本人手机 系统为 Android 5.1.1。 网络上有太多的文章介绍 Android 应用如何...

    目录

    本文导读

    应用开机自启

    常用系统事件


    本文导读

    因为业务需要,项目中需要实现 APP 跟随系统开机后自动运行,环境是:minSdkVersion 17、targetSdkVersion 28、Android Studio 3.1.2,本人手机 系统为 Android 5.1.1。

    网络上有太多的文章介绍 Android 应用如何根据系统开机自动运行,但是实际操作起来会发现并没有说的那么简单。

    所以本文先将所有的注意事项介绍在前,然后再讲具体的实现。

    1)注意事项 1:在全局配置文件:AndroidManifest.xml 中

    1.1)android:installLocation="internalOnly":表示程序只能被安装在内存中,如果内存为空,则程序将不能成功安装,因为安装在 SD 卡中时会接收不到系统的广播消息(暂时未验证)

    1.2)<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />:添加允许程序随系统开机而自动运行的权限

    1.3)<!--注册接收系统开机广播消息的广播接收者-->
    <receiver
        android:name=".broadcastReceiver.MyBroadcastReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </receiver>
    

    2)注意事项 2 :就是手机上的设置问题。为了防止恶意软件随意的开机自启,拖慢系统的开机速度,损害用户体验,通常手机上类似 “手机管家” 等软件默认是不允许它们开机自启的,这也是本人反反复复测试失败的原因。

    因为 Android 系统是开源的,所以各大手机厂商可能略有不同,以本人的 Nubia(努比亚) 手机为例,它默认出厂自带一个 "手机管家" 软件,如下所示,必须将自己需要开机自启的应用设置为通过,否则测试一个下午也不见成功。

    3)注意事项 3:开机自启的 APP 安装后启动系统时,第一次要手动开启 APP,后面再次开机时,APP 就能正常自启了。

    应用开机自启

    1、原理就不多说了,网上很多文章都已经说过了,核心就是因为 Android 系统在很多时刻都会给所有的应用广播消息,比如 系统开机、电量低,网络状态变化等,只需自己静态注册广播接收者,然后接收系统发出的广播消息然后处理即可。

    2、代码其实非常简单,就是这些细节问题导致容易导致失败,效果如下,系统开机后,启动 APP,现在开始上代码。

    布局文件 activity_main.xml 文件内容如下,就是 helloWorld 默认生成的内容,

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </android.support.constraint.ConstraintLayout>

    自定义广播接收者 继承 android.content.BroadcastReceiver:

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    import android.widget.Toast;
    import com.lct.www.yuan.MainActivity;
    /**
     * 自定义 广播接收者
     * 继承 android.content.BroadcastReceiver
     */
    public class MyBroadcastReceiver extends BroadcastReceiver {
        private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
        /**
         * 接收广播消息后都会进入 onReceive 方法,然后要做的就是对相应的消息做出相应的处理
         *
         * @param context 表示广播接收器所运行的上下文
         * @param intent  表示广播接收器收到的Intent
         */
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("Wmx logs::", intent.getAction());
            Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG).show();
    
            /**
             * 如果 系统 启动的消息,则启动 APP 主页活动
             */
            if (ACTION_BOOT.equals(intent.getAction())) {
                Intent intentMainActivity = new Intent(context, MainActivity.class);
                intentMainActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intentMainActivity);
                Toast.makeText(context, "开机完毕~", Toast.LENGTH_LONG).show();
            }
        }
    }

    主活动 MainActivity.java 内容如下:

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            Log.i("Wmx logs::", "活动创建...");
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        /**
         * 当活动被销毁时
         */
        @Override
        protected void onDestroy() {
            Log.i("Wmx logs::", "活动销毁...");
            super.onDestroy();
            /**注销 unregisterReceiver(),否则可能引起内存泄露。*/
        }
    }
    

    全局配置文件 AndroidManifest.xml 内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.lct.www.yuan"
        android:installLocation="internalOnly">
    
        <!--添加允许程序开机自动运行权限-->
        <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=".broadcastReceiver.MyBroadcastReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                    <category android:name="android.intent.category.HOME" />
                </intent-filter>
            </receiver>
        </application>
    </manifest>

    本文环境:minSdkVersion 17、targetSdkVersion 28、Android Studio 3.1.2,本人手机 系统为 Android 5.1.1,代码完全亲测有效。

    开机自启的 APP 安装后启动系统时,第一次要手动开启 APP,后面再次开机时,APP 就能正常自启了。

    常用系统事件

    有许多系统产生的事件被定义为类 Intent 中的静态常量值。下面的表格列举了重要的系统事件。

    事件常量 描述
    android.intent.action.BATTERY_CHANGED 持久的广播,包含电池的充电状态,级别和其他信息。
    android.intent.action.BATTERY_LOW 标识设备的低电量条件。
    android.intent.action.BATTERY_OKAY 标识电池在电量低之后,现在已经好了。
    android.intent.action.BOOT_COMPLETED 在系统完成启动后广播一次。
    android.intent.action.BUG_REPORT 显示报告bug的活动。
    android.intent.action.CALL 执行呼叫数据指定的某人。
    android.intent.action.CALL_BUTTON 用户点击"呼叫"按钮打开拨号器或者其他拨号的合适界面。
    android.intent.action.DATE_CHANGED 日期发生改变。
    android.intent.action.REBOOT 设备重启。
    展开全文
  • 2, 自动运行startx启动窗口系统 3, 窗口系统启动后,自动运行自定义的程序(一般是应用主界面) 研究了一下,是这样做的 实现自动登录:修改/etc/inittab文件 sudo nano /...

    如果把树莓派(raspberry pi)做成一个电器的话,一上电,必须支持几个动作

    1, 自动登录

    2, 自动运行startx启动窗口系统

    3, 窗口系统启动后,自动运行自定义的程序(一般是应用主界面)



    研究了一下,是这样做的


    实现自动登录:修改/etc/inittab文件



    sudo nano /etc/inittab
    向下滚动,找到行               1:2345:respawn:/sbin/getty 115200 tty1
    注释掉这一行,修改为       #1:2345:respawn:/sbin/getty 115200 tty1
    在该行下增加一行内容       1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1

    按Ctrl+X退出,记得按Y键保存

    原理:linux启动时,会读取inittab文件,执行其中的登录命令,以pi用户名自动登录


    实现自动运行startx启动窗口系统: 修改/etc/rc.local文件

    sudo nano /etc/rc.local
    在文件尾部(在exit 0前)加上一行 su pi -c startx

    这个命令的意思是,以pi用户的身份,执行startx

    按Ctrl+X退出,记得按Y保存


    重新启动即可 

    sudo reboot


    这一次启动后,将直接以pi用户登入系统,并立即启动 startx


    原理:linux启动时,用户登录后,会执行/etc/rc.local脚本文件,一般我们把要自动执行的命令放在该文件中


    窗口系统启动后,自动运行自定义的程序的实现方法


    进入当前用户HOME目录下的.config目录(这是一个隐藏目录,需用ls -a显示出来)

    cd ~/.config 

    当前用户是pi, 其HOME目录是/home/pi, 上述命令相当于 cd /home/pi/.config

    建立一个名为autostart的子目录,并进入该目录

    mkdir autostart

    cd autostart

    生成一个*.desktop文件(比如:my.desktop),命令如下:

    sudo nano my.desktop


    输入以下文件内容:


    [Desktop Entry]
    Type=Application
    Exec=midori


    最后一句Exec的值就是要启动的程序名(最好是全路径的可执行文件名),此处是midori浏览器

    按CTRL+X退出,记得按Y键存盘

    OK了,重新 startx 即可

    原理:startx后,LXDE窗口管理器会找到~/.config/autostart目录下的所有 .desktop文件,一一执行


    把上述全部串起来,就是一上电:自动登录-自动启动窗口-自动运行程序

    展开全文
  • 自动运行脚本

    千次阅读 2019-02-28 11:59:08
    控制面板------管理工具------任务计划程序 中可编辑脚本自动运行。 之前还傻傻地写while(true)一直运行脚本。 orz

    控制面板------管理工具------任务计划程序  中可编辑脚本自动运行。

    之前还傻傻地写while(true)一直运行脚本。

    orz

    展开全文
  • 1.说明该设置是指导Linux启动自动运行指定的.sh脚本,对于应用的自动启动道理相同,可以把启动命令写入.sh文件,也可以在/etc/init.d/新建的文件2.在/etc/init.d文件夹下创建initeop文件vi initeop#!/bin/bash#...

    1.说明

    该设置是指导Linux启动自动运行指定的.sh脚本,对于应用的自动启动道理相同,可以把启动命令写入.sh文件,也可以在/etc/init.d/新建的文件

    2.在/etc/init.d文件夹下创建initeop文件
    vi initeop
    #!/bin/bash
    #chkconfig:235 95 05
    #description:eop auto start-stop script.
    HOME=/home


    USER=weblogic
    case "$1" in
    'start')
    echo "init eop ----------------------------------"
    su - ${USER} -c "cd ${HOME}; ./init.sh"
    echo "OK"
    ;;
    'stop')
    echo "linux stopping------------------------------"
    #su - ${USER} -c "cd ${HOME}; ./stop.sh"
    ;;


    esac


    3.给文件添加执行权限
    chmod 755 /etc/init.d/initeop


    4. 建立服务连接: 
    要在重新启动时停止.sh,需要以下连结∶ 
    [root@rh init.d]# ln -s ../init.d/initeop /etc/rc.d/rc0.d/K05initeop
    [root@rh init.d]# ln -s ../init.d/initeop /etc/rc.d/rc6.d/K05initeop


    系统启动时运行.sh,我们需要以下连结∶ 
    [root@rh init.d]# ln -s ../init.d/initeop /etc/rc.d/rc2.d/S95initeop
    [root@rh init.d]# ln -s ../init.d/initeop /etc/rc.d/rc3.d/S95initeop
    [root@rh init.d]# ln -s ../init.d/initeop /etc/rc.d/rc5.d/S95initeop


    5.添加initeop为系统服务
    chkconfig --add initeop 

    [weblogic@rh ~]$ service initeop start


    总结:实际上Linux开机自动启动,重点在/etc/init.d文件夹,在该文件夹创建相应的文件去运行对应的.sh文件,对于文件里面内容是什么无所谓,可以是运行应用的命令,也可以是运行.sh文件的命令,然后去创建相应的链接,就可以开机启动。

    1./etc/init.d

    2.添加执行该文件的权限。

    3.建立服务连接。

    4.添加为系统服务,这一步,我没试,按说不添加应该也可以。

    展开全文
  • 博主做的是一个ftp服务器,因为是在自己电脑上,希望局域网内可以互相传文件,所以希望开机之后能自动运行。 对于Windows系统,开机之后当所有的软件初始化完毕之后,会自动运行C:\Users\Administrator\AppData\...
  • 一运行WORD,就自动运行endnote

    千次阅读 2019-06-25 08:12:59
    不知为何,一运行WORD,就自动运行endnote? **解决方法:**在word里的endnote选项中,找到preference,点击进入后,取消“启动word时启动endnote”,“关闭word时关闭endnote”即可 ...
  • 重启 - 任务计划程序 - 创建任务 ... - 触发器——每天3:00 - 操作——启动程序:E:...重启之后自动运行程序 - 任务计划程序 - 创建任务 - 安全选项——不管用户是否登陆都要运行、使用最高权限运行 - 触...
  • python打卡以及Linux自动运行python文件

    千次阅读 2021-01-17 11:43:18
    python打卡以及Linux自动运行python文件前因分析python代码实现linux自动运行python文件了解crond开机自启设置定时运行python文件设置crond踩坑总结 前因 学校弄了个每日打卡,需要我们每天打卡两次,对于学校这种...
  • 京东活动+自动运行脚本+签到2021.05.05更新

    万次阅读 多人点赞 2021-02-01 20:17:19
    检测是否安装成功:点击开始-运行-cmd(win+R),打开dos,输入“node --version”检查Node.js版本:只要有显示就说明没问题了。每天大概300-400个京豆,有时候现金红包会有6元左右。下载脚本包:https://..
  • 2, 自动运行startx启动窗口系统 3, 窗口系统启动后,自动运行自定义的程序(一般是应用主界面) 研究了一下,是这样做的 实现自动登录:修改/etc/inittab文件 sudo nano /etc/inittab 向下滚动,找到...
  • 这里写自定义目录标题PLC控制KUKA机器人外部自动运行配置方法外部自动运行接口的输入/输出端配置功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合...
  • 树莓派自动运行程序

    万次阅读 2013-03-07 15:03:35
    如果把树莓派(raspberry pi)做成一个电器的话,一上电,必须支持几个动作 ...2, 自动运行startx启动窗口系统 ...3, 窗口系统启动后,自动运行自定义的程序(一般是应用主界面) 研究了一下,是这样做的
  • 开发可以自动运行程序的U盘

    千次阅读 2018-03-23 16:59:39
    为什么要开发这样的U盘 可以自动运行程序的U盘插入电脑后U盘里面的程序会自动运行,这样的U盘可以作为软件厂商存储程序的载体,也可以作为U盘厂商扩展U盘功能的一种途径。举几个例子:有加密功能的U盘可以把加密...
  • win10 如何自动运行python 代码

    千次阅读 2018-12-17 11:26:04
    win10下如何自动运行python 代码 step1:首先选择管理 step2:找到并打开任务计划程序 step3:点开新建基本任务 step4:在触发器选择程序执行的频率 step5:选择启动程序时自动运行 step6:启动程序 ...
  • 自动运行php文件

    千次阅读 2014-03-28 17:26:13
    所谓任务计划就是由计算机自动调用用户事先设置好的应用程序,从而达到简化用户操作的目的。... 具体来说,我们若需利用任务计划程序自动运行则应执行如下步骤: 1.单击”开始”按钮,然后依次选择”程
  • Zabbix Server 和 Zabbix Agentd 开机自动运行 Zabbix Server 和 Zabbix Agentd 开机自动运行 请问:怎样 Zabbix Server 和 Zabbix Agentd 开机自动运行? 注:如果你的命令行写进了 /etc/rc....
  • EXCEL打开时不自动运行

    千次阅读 2019-03-07 16:44:49
    如果你写了一段在打开时自动运行的宏,而现在不想Ta自动运行, 1.你可以修改VBA代码 2.你可以尝试新建一个EXCEL, 在文件—&gt;打开 中选择你写了宏的EXCEL, 点击“打开”的同时按住Shift键即可! ...
  • Windows开机自动运行.py文件

    千次阅读 2019-04-25 11:44:23
    Windows开机自动运行.py文件 1.找到写好的.py文件,例如我的.py文件路径:D:\编程测试文件\untitled\03131105.py 2.选中文件03131105.py,右键——属性——常规——更改,选择默认打开方式为python.exe,然后“确定...
  • 配置并采用外部自动运行 PLC连接 1.通过外部自动运行接口可用上级控制器(例如用一个PLC)来控制机器人进程。 2.上级控制系统通过外部自动运行接口向机器人控制系统发出机器人进程的相关信号 (如运行许可、故障确认...
  • springboot启动项目自动运行测试方法

    千次阅读 2020-04-14 15:43:40
    springboot启动项目自动运行测试方法 实现方式 在xxxx包下创建一个类xxxxx.java,该类需要继承ApplicationRunner接口并实现里面的run方法,并将该类通过@Component 注入到spring里, 源码如下: package ...
  • zedboard实现软件开机自动运行,让opencv运行库和qt运行库自动加载
  • Ubuntu添加开机自动运行程序

    千次阅读 2016-11-17 17:49:19
    ubuntu下有很多中开机自动运行程序的方法,在开机的不同过程中可以启动不同的程序.如在开机启动时自动运行程序,是通过修改放置在  /etc/rc或   /etc/rc.d 或   /etc/rc?.d   目录下的脚本文件,可以使...
  • 使用IDEA创建gradle项目后,执行main方法时会自动运行gradle的一些build task,导致启动很慢,如下图: 解决方法: 打开设置页面,进行如下修改:
  • 1.安装命令并自动运行apk命令的使用
  • 京东活动+签到 自动运行脚本 源自 lxk0301大佬 4.10

    千次阅读 热门讨论 2021-04-03 09:38:02
    京东活动+签到 自动运行脚本 源自 lxk0301大佬 提示:脚本原作者仓库:https://gitee.com/lxk0301/jd_docker,建议使用原作者docker部署,本例仅提供node本地运行方式,仅供自用 一、下载脚本 脚本地址:...
  • python脚本在服务器后台自动运行和停止 后台运行命令 nohup python -u test.py > test.log 2>&1 & test.py 是要运行的脚本; test.log 是运行脚本生成的日志文件; -u表示每多一条信息就实时输出到...
  • Windows中实现定时自动运行程序

    千次阅读 2016-07-21 13:07:00
    摘要:本文通过实例详细讨论了windows 操作系统下实现定时自动运行指定程序的方法,同时对UNIX操作系统下定时自动运行指定程序的方法也进行了介绍,该方法已经在银行网络设备管理中得到实际应用,取得很好效果。...
  • 2、然后我们把软件的快捷方式,或是文件放到该启动文件夹中,Win10开机后就可以自动运行了。   方法二:注册表添加启动项 1、打开运行,输入“regedit”,打开注册表。 4、在注册表中找到如下位置HKEY_...
  • Linux实现开机自动运行普通用户脚本

    千次阅读 2019-04-23 13:40:44
    既然要实现开机自动运行脚本,那么就与Linux开机自启服务的原理有关;Linux开机的时候,会有一步读取/etc/inittab配置文件,选定系统运行级别,然后进行系统初始化,执行/etc/rc.d/下的rc脚本;而其中/etc/rc.d/rc....
  • 1、关闭双击自动运行python程序如上图所示,我的电脑默认情况下.py文件使用python打开并执行的,误点击很容易出问题。右键文件----&gt;选择“打开方式”----&gt;选择“其他程序”(选择一些打开文本的工具,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,199
精华内容 71,679
关键字:

自动运行