开机自启动

当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个BroadcastReceiver。

1.首先定义一个BroadcastReceiver,覆写其onReceive()方法,在里面判断intent是否是开机启动广播,如果是的话就进行相应的处理;

public class BootBroadcastReceiver extendsBroadcastReceiver {static final String BOOT_ACTION = "android.intent.action.BOOT_COMPLETED";

@Overridepublic voidonReceive(Context context, Intent intent) {if(intent.getAction().equals(BOOT_ACTION)) {//doSomething(startService or startAcvitity or downLoadFile ...)

}

}

}

2.在Manifest文件中进行配置,intent-filter表示该Receiver接收的广播消息为:android.intent.action.BOOT_COMPLETED;

添加删除桌面快捷方式

有时候希望自动将程序快捷方式添加到桌面,最近在一个项目中,就遇到这样的需求,现将自己在做法进行总结及延伸。

1.添加:查看Launcher源码,查看是如何添加桌面快捷方式的,发现Launcher通过自己注册的InstallShortCutReceiver和UnInstallShortCutReceiver实现快捷方式图标的生成与移除过程;

android:permission="com.android.launcher.permission.INSTALL_SHORTCUT" >

于是乎就可以发送一个广播给Launcher,Launcher接收到此广播之后就可以将快捷方式添加到桌面,并且需要添加权限

public voidaddShortcut() {//创建快捷方式的Intent

Intent shortcutIntent = newIntent("com.android.launcher.action.INSTALL_SHORTCUT");//不允许重复创建

shortcutIntent.putExtra("duplicate", false);//快捷方式的名称

shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,

getString(R.string.app_name));//快捷图片,一个Parcelable对象

Parcelable icon =Intent.ShortcutIconResource.fromContext(

getApplicationContext(), R.drawable.ic_launcher);

shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);

Intent intent= new Intent(getApplicationContext(), MainActivity.class);

intent.setAction("android.intent.action.MAIN");

intent.addCategory("android.intent.category.LAUNCHER");//点击快捷图片,运行的程序主入口

shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);

sendBroadcast(shortcutIntent);

}

添加权限:

2.删除:删除快捷方式用得不多,上面的方式添加到桌面的快捷方式,在程序卸载的时候也会自动从桌面删除;

public static voiddelShortcut(Context context) {

Intent shortcut= newIntent("com.android.launcher.action.UNINSTALL_SHORTCUT");//获取当前应用名称的另一种方式

String title = null;try{final PackageManager pm =context.getPackageManager();

title=pm.getApplicationLabel(

pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA)).toString();

}catch(Exception e) {

}//快捷方式名称

shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);

Intent intent=context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());

shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);

context.sendBroadcast(shortcut);

}

3.判断桌面快捷方式是否已经存在

public static booleanhasShortcut(Context cx) {boolean result = false;//获取当前应用名称

String title = null;try{final PackageManager pm =cx.getPackageManager();

title=pm.getApplicationLabel(

pm.getApplicationInfo(cx.getPackageName(), PackageManager.GET_META_DATA)).toString();

}catch(Exception e) {

}finalString uriStr;if (android.os.Build.VERSION.SDK_INT < 8) {

uriStr= "content://com.android.launcher.settings/favorites?notify=true";

}else{

uriStr= "content://com.android.launcher2.settings/favorites?notify=true";

}final Uri CONTENT_URI =Uri.parse(uriStr);final Cursor c = cx.getContentResolver().query(CONTENT_URI, null,"title=?", new String[] { title }, null);if (c != null && c.getCount() > 0) {

result= true;

}returnresult;

}

几个相关的Action

//系统启动完成

static final String BOOT_COMPLETED_ACTION = "android.intent.action.BOOT_COMPLETED";//设备上新安装了一个应用程序包

static final String PACKAGE_ADDED_ACTION = "android.intent.action.PACKAGE_ADDED";//设备上删除了一个应用程序包

static final String PACKAGE_REMOVED_ACTION = "android.intent.action.PACKAGE_REMOVED";//删除应用程序快捷方式,需要如下权限//com.android.launcher.permission.UNINSTALL_SHORTCUT

static final String UNINSTALL_SHORTCUT_ACTION = "com.android.launcher.action.UNINSTALL_SHORTCUT";//添加快捷方式,需要如下权限//com.android.launcher.permission.INSTALL_SHORTCUT

static final String INSTALL_SHORTCUT_ACTION = "com.android.launcher.permission.INSTALL_SHORTCUT";

4.监听app安装/卸载过程,需要用到上面的PACKAGE_ADDED和PACKAGE_REMOVED两个Action,可以对获取到的应用程序包名进行相应的判断处理;

@Overridepublic voidonReceive(Context context, Intent intent) {if(intent.getAction().equals(PACKAGE_ADDED_ACTION)) {//doSomething ...获取应用程序包名

String packageName =intent.getDataString();}

}

添加如下配置,对Receiver进行配置

linux开机不运行桌面快捷方式,Android 开机自动运行和添加删除桌面快捷方式相关推荐

  1. Android 开机自动运行和添加删除桌面快捷方式

    <一>开机自启动 当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_C ...

  2. [转载] Motorola——Milestone XT702添加删除桌面图标

    来源:http://www.hiapk.com/bbs/thread-959-1-1.html 添加桌面图标: 进入菜单界面找到想要建立桌面快捷方式的程序,按住图标不放,感到一下震动了没有,之后把图标 ...

  3. 在Windows系统中 开机自动运行一个Python脚本 或者自动运行一个软件

    以前做过开机运行,但是现在用的时候又给忘了,所以本次来写一下步骤. 博主做的是一个ftp服务器,因为是在自己电脑上,希望局域网内可以互相传文件,所以希望开机之后能自动运行. 对于Windows系统,开 ...

  4. arm linux运行安卓app,Android x86 下运行纯ARM版APP

    Android x86 默认不带houdini,运行纯ARM版会提示: 很抱歉,"xxxx"已停止运行 设置->应用兼容性->打开 终端模拟器 $ su # enabl ...

  5. android 开机向导加载过程,Android开机向导构建流程

    前言 在设备首次开机的时候我们往往会给与用户一些操作提示,比如如何对焦.遥控器配对等,这个时候就需要一个界面在Launcher启动之前呈现给用户,这个界面就是所谓的开机向导,本质上开机向导就是一个普通 ...

  6. win10系统桌面计算机图标怎么删除,win10 移除快捷方式的图标怎么操作_win10怎样删除桌面上的快捷方式图标...

    刚更新完w10系统的小伙伴可能都会发现这么一个问题,就是刚更新完都会发现电脑桌面上的图标有一些都是带着一个快捷方式的小箭头,这个时候肯定会有小伙伴们看着难受想要吧快捷方式的图标删除,那么win10 移 ...

  7. linux docker自动启动,linux – Cron作业不能在Docker容器内自动运行

    我有一个带监督员的LAMP容器. 我添加一个简单的cron * * * * * root / bin / date>> /var/log/cron.log 来自我的Dockerfile A ...

  8. 添加删除桌面用户ubuntu10.10

    添加桌面用户Jack 1.useradd Jack 2.passwd Jack 输入密码: 3.以Jack身份在/home下新建Jack文件夹 注:意即该文件夹的所有者和所属组为Jack 删除桌面用户 ...

  9. android开机默认打开指定程序,android 开机默认进入指定Launcher

    这里总结下我研究这个需求,想出的两种解决方案. 第一种方法最简单暴力只要修改apk的AndroidManifest直接上源码 这里就加了一句android:priority="2" ...

  10. android开机默认动画,求一个 android 开机动画的代码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 @_噢噢 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedIn ...

最新文章

  1. Java mission control 飞行记录器开启失败
  2. 【综述专栏】自动驾驶中可解释AI的综述和未来研究方向
  3. 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3
  4. Spring Security基于角色的权限管理
  5. android旋转动画和平移动画具体解释,补充说一下假设制作gif动画放到csdn博客上...
  6. Quartz调用大全
  7. win2016开启ntp_Windows服务器开启NTP服务
  8. Unity通过键盘按键控制小球移动
  9. Android 去掉标题全屏显示
  10. 练习题︱基于今日头条开源数据的词共现、新热词发现、短语发现
  11. 推荐:详解AI加速器(最终篇)
  12. java 追加文件换行_java 追加换行txt
  13. 使用 TimeGAN 建模和生成时间序列数据
  14. php mb_eregi_replace 只替换一个,mb_eregi_replace多个匹配得到它们
  15. Lonlife 1016 Change of Life
  16. 用scrapy框架爬取拉勾网招聘信息
  17. 【coq】函数语言设计 笔记 02 - induction
  18. 基于JSP实现医院病历管理系统,程序员如何在工作中自我增值
  19. 巴菲特致股东的一封信:2002年
  20. 导学目录-学如逆水行舟

热门文章

  1. DTD语法 (元素、属性、实体声明)
  2. 计算机专业自主招生有哪些学校,自主招生的学校类型有哪些
  3. java实现 猜数字游戏
  4. JavaScript之时间线(代码解释)
  5. 小葵花妈妈课堂之nginx必须要了解的优化九部曲!
  6. 玛雅历 —— C++
  7. FireFox插件开发--弃用NPAPI
  8. ie11找不到java_IE11桌面图标不见了怎么办 IE11桌面图标不见了的两种解决方法
  9. 论文绘图与合成图片过程中常见问题
  10. Clickhouse基础语法、数据类型、数据表引擎学习