【Android进阶】快捷图标的创建与移除
注释已经说得很清楚了,如果有疑问,请留言
/**
* 添加桌面快捷方式
*
* @param view
*/
public void click1(View view) {
if (isExit()) {
Toast.makeText(getApplicationContext(), "快捷方式已经存在", 0).show();
return;
}
// 取得图标资源
Parcelable icon = Intent.ShortcutIconResource.fromContext(
getApplicationContext(), R.drawable.logo);
Intent intent = new Intent();
// 设置意图的动作
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
// 设置图标的名称
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL");
// 设置图标
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
// 设置意图的动作和类别
Intent intent2 = new Intent();
intent2.setAction(Intent.ACTION_MAIN);
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
intent2.setComponent(new ComponentName(this, MainActivity.class));
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2);
sendBroadcast(intent);
}
/**
* 删除桌面快捷方式
*
* @param view
*/
public void click2(View view) {
Parcelable icon = Intent.ShortcutIconResource.fromContext(
getApplicationContext(), R.drawable.logo);
Intent intent = new Intent();
// 设置意图的动作
intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
// 设置图标的名称
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL");
// 设置图标
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
// 设置意图的动作和类别
Intent intent2 = new Intent();
intent2.setAction(Intent.ACTION_MAIN);
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
intent2.setComponent(new ComponentName(this, MainActivity.class));
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2);
sendBroadcast(intent);
}
/**
* 判断桌面是否已经存在快捷方式
*
* @return
*/
private boolean isExit() {
Uri uri = null;
// 不同版本中的Uri不同
if (getSdkVersion() < 8) {
uri = Uri
.parse("content://com.android.launcher.settings/favorites");
} else {
uri = Uri
.parse("content://com.android.launcher2.settings/favorites");
}
String selection = "title=?";
String[] selectionArgs = new String[] { "LOL" };
Cursor cursor = getContentResolver().query(uri, null, selection,
selectionArgs, null);
if (cursor.moveToNext()) {
cursor.close();
return true;
} else {
cursor.close();
return false;
}
}
/**
* 获得手机SDK的版本
*
* @return
*/
private int getSdkVersion() {
return android.os.Build.VERSION.SDK_INT;
}
需要声明的权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!-- 读取设置权限 -->
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 删除快捷方式权限 -->
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>
【Android进阶】快捷图标的创建与移除的更多相关文章
- 【Android进阶】为什么要创建Activity基类以及Activity基类中一般有哪些方法
现在也算是刚刚基本完成了自己的第一个商业项目,在开发的过程中,参考了不少人的代码风格,然而随着工作经验的积累,终于开始慢慢的了解到抽象思想在面向对象编程中的重要性,这一篇简单的介绍一下我的一点收获. ...
- CentOS Android Studio桌面图标的创建
1.切换到root用户,在桌面上创建Android.Studio.desktop,如下: [Desktop Entry] Name=Android Studio Comment=Android Stu ...
- 安卓开发之APK安装之后自动在桌面上创建快捷图标
可以看到很多的APP在第一次运行之后就会弹出来一个Toast说什么快捷方式已创建,那么这个东西是怎么搞出来的呢 很简单就下面几句话,写在这儿以后好copy 先创建一个类 import android. ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- 我的Android进阶之旅------>经典的大牛博客推荐(排名不分先后)!!
本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超 ...
- Android开发面试经——4.常见Android进阶笔试题(更新中...)
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...
- 我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...
- Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费
Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费 其实在很早的时候我就有想过,是不是退出一些群,因为群太多了,里面的水友也多,基友也多,就难免会水起来,这样既耽误学习又耽误工作, ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
随机推荐
- linux脚本后台监控执行指定程序的状态(假设程序是死的重新启动程序)
#!/bin/sh while true do ps | grep "main_3g" | grep -v "grep" > /dev/null if [ ...
- 谈Web应用系统的可维护性
每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢? 一. 整体组织 ...
- ACM-简单的主题Ignatius and the Princess II——hdu1027
转载请注明出处:http://blog.csdn.net/lttree Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Othe ...
- PHP实现队列(Queue)数据结构
队列(Queue),是一种特殊的先进先出线性表,其只能在前端进行删除操作(一般称为出队),在后端进行插入操作(一般称为入队).进行删除操作的端称为队头,进行插入操作的端称为队尾.队列,是按照先进先出或 ...
- hdu 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】(转)
HDU 动态规划(46道题目)倾情奉献~ [只提供思路与状态转移方程] Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包 ...
- ORACLE函数之日期时间运算函数
1 ADD_MONTHS 格式:ADD_MONTHS(D,N) 说明:返回日期时间D加N月后相应的日期时间.N为正时则表示D之后:N为负时则表示为D之前.N为小数则会自己主动先删 ...
- 【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制
前言 HDFS为管理员提供了针对文件夹的配额控制特性,能够控制名称配额(指定文件夹下的文件&文件夹总数),或者空间配额(占用磁盘空间的上限). 本文探究了HDFS的配额控制特性,记录了各类配额 ...
- ECToch随笔
1.去掉后台Powered by ECTouch.Cn mobile\include\apps\admin\view\index.php第五行<title>{$lang['cp_home' ...
- ASM时的OFM特性对影的建数据文件名称的影响及为SYSTEM表空间的数据文件使用别名
客户遇到个DG的问题,存储使用的ASM管理,有多个磁盘盘. 在主库创建数据文件,备库自己主动创建的数据文件都在同一磁盘组,而且在主库创建数据文件是指定的是类似**.DBF的名字,到备库也变成了使用AS ...
- Portlet MVC框架
Portlet MVC框架 16.1. 介绍 Spring不仅支持传统(基于Servlet)的Web开发,也支持JSR-168 Portlet开发. Portlet MVC框架尽可能多地采用Web ...