自定义Launcher设为默认应用

核心代码:

....
// launcher应用中包含的xml配置
		String action = Intent.ACTION_MAIN;
		String category1 = Intent.CATEGORY_HOME;
		String category2 = Intent.CATEGORY_DEFAULT;

		IntentFilter filter = new IntentFilter();
		filter.addAction(action);
		filter.addCategory(category1);
		filter.addCategory(category2);

		// 创建默认应用componentName,这里为本应用
		ComponentName component = new ComponentName(getApplicationContext().getPackageName(), MainActivity.class.getName());

		Intent intent = new Intent();
		intent.setAction(action);
		intent.addCategory(category1);

		PackageManager pm = getPackageManager();
		// 使用PackageManager查找action为Intent.ACTION_MAIN、category为Intent.CATEGORY_HOME的所有应用包
		List<ResolveInfo> list = pm.queryIntentActivities(intent, PackageManager.GET_INTENT_FILTERS);
		ComponentName[] comNames = new ComponentName[list.size()];

		int size = list.size();
		for(int i = 0; i < size ; i++){
			ActivityInfo activityInfo = list.get(i).activityInfo;
			String pckName = activityInfo.packageName;
			String clsName = activityInfo.name;
			// 循环清除原有的默认应用设置
			pm.clearPackagePreferredActivities(pckName);
			ComponentName cn = new ComponentName(pckName, clsName);
			comNames[i] = cn;
		}
		/*
		 *  设置默认应用,对华为Link+源码分析,最终设置参数持久化到/data/system/users/0/package-restrictions.xml 中
		 *
		 *  addPreferredActivity 需要 android.permission.SET_PREFERRED_APPLICATIONS权限,该权限需要使用signapk签名
		 */
		pm.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY, comNames, component);
...

signapk签名可参照

Android apk 获取系统权限的方式

自定义Launcher设为默认应用

时间: 2024-10-15 07:22:00

自定义Launcher设为默认应用的相关文章

仿新浪微博IOS客户端(v5.2.8)——自定义UITabBar替换系统默认的(添加“+”号按钮)

转载请标明出处:http://blog.csdn.net/android_ls/article/details/45896395 声明:仿新浪微博项目,所用所有图片资源都来源于官方新浪微博IOS客户端,编写本应用的目的在于学习交流,如涉及侵权请告知,我会及时换掉用到的相关图片. 自定义UITabBar替换系统默认的,目的是为了在UITabBar中间位置添加一个"+号按钮",下面我们来聊聊具体的实现. 1.自定义WBTabBar,让其继承自UITabBar,代码如下: // // WBT

base.css(重设浏览器默认样式)

@charset "utf-8"; /* @名称: base @功能: 重设浏览器默认样式 */ /* 防止用户自定义背景颜色对网页的影响,添加让用户可以自定义字体 */ html { color:black; background:white; } /* 内外边距通常让各个浏览器样式的表现位置不同 */ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p

fedora 21 + win8 开机启动项的顺序设为默认启动win8

我是先安装了win8,再安装fedora21的.安装完成fedora21后,开机启动项的顺序就被设为默认启动fedora了.那么我想修改回默认启动win8该怎么做呢?其实也不难: 1.找到 /boot/efi/EFI/fedora/grub.cfg,进入root权限,vim 打开gurb.cfg进行修改: 将 ### BEGIN /etc/grub.d/30_os-prober ###menuentry 'Windows Boot Manager (on /dev/sda1)' --class

vue2购物车ch4-(筛选v-for 点击的那个设置样式 设为默认地址其他 联动 非循环的列表选中和非选中 删除当前选中的列表)

1 address.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta charset="utf-8"> <!-- Always force latest IE rendering engine or request Chrome Frame --> <meta conten

iOS之自定义UITabBar替换系统默认的(添加“+”号按钮)

自定义UITabBar替换系统默认的,目的是为了在UITabBar中间位置添加一个“+号按钮”,下面我们来聊聊具体的实现. 1.自定义WBTabBar,让其继承自UITabBar,代码如下: // // WBTabBar.h // SinaWeibo // // Created by android_ls on 15/5/21. // Copyright (c) 2015年 android_ls. All rights reserved. // #import <UIKit/UIKit.h>

Swing中使用UIManager批量自定义单一JComponent组件默认属性

最近在研究Swing,被它的复杂性气的快吐血了,刚才本打算把JFrame的背景色换成白底,结果发现事情没想象中那么顺利,调用setBackground完全没有效果,猛然醒悟到JPanel本身是带不透明底色的,事情一下子变得复杂起来了,因为即便最简单的窗口布局,也是嵌套了若干层JPanel.JSplitPane等容器的,一层遮盖一层,而要想统一改成白底的话,那得一个个改代码,或者用复杂的遍历算法... 百度上寻觅了一下,发现一个老去已久的帖子有提及到使用UIManager来批量更改默认值的,例如:

ubuntu13.04中把ibus中的中文拼音输入设为默认

fcitx输入法没有离线的安装方法,你用安装命令安装试试吧,还有下载速度慢出了网速问题,还有可能是源的问题.ubuntu安装fictx输入法 准备工作:卸载Ubuntu默认的ibus输入法: sudo apt-get remove ibus 然后添加Fcitx 源: sudo add-apt-repository ppa:fcitx-team/nightly sudo apt-get update 然后 安装fcitx,搜狗输入法,Google输入法,云输入法,以及设置fcitx为默认: sud

jQuery自定义组件——输入框设置默认提示文字

if (window.jQuery || window.Zepto) { /** * 设置输入框提示信息 * @param options * @author rubekid */ var setInputTipValue = window.setInputTipValue = function(target, options){ options = options ||{}; var _self = target.get(0); if(_self._initTip){ return false

Django自定义用户表替换默认用户表认证

1.自定义用户表 from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class UserProfile(AbstractUser):   ##引用Django内置的AbstractUser表,并添加下列字段     nick_name = models.CharField(max_length=50,default="",