Android 创建/验证/删除桌面快捷方式(已测试可用)

 更新时间:2013年02月06日 17:42:09   作者:  
桌面快捷方式的出现方便了用户操作,在某些程度上提高了用户体验,接下来将介绍下Android创建/验证/删除桌面快捷方式的实现思路及代码,感兴趣的朋友可以了解下,或许本文可以帮助到你
测试环境为Adnroid 2.1以上。
第一步:AndroidManifest.xml 权限配置:
添加快捷方式权限:
复制代码 代码如下:

<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" />

代码:
复制代码 代码如下:

public class ShortCutSample {
/**
* 添加快捷方式
* */
public void creatShortCut(Activity activity,String shortcutName,int resourceId)
{
Intent intent = new Intent();
intent.setClass(activity, activity.getClass());
/*以下两句是为了在卸载应用的时候同时删除桌面快捷方式*/
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
//不允许重复创建
shortcutintent.putExtra("duplicate", false);
//需要现实的名称
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
//快捷图片
Parcelable icon = Intent.ShortcutIconResource.fromContext(activity.getApplicationContext(), resourceId);
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
//点击快捷图片,运行的程序主入口
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
//发送广播。OK
activity.sendBroadcast(shortcutintent);
}
/**
* 删除快捷方式
* */
public void deleteShortCut(Activity activity,String shortcutName)
{
Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
//快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,shortcutName);
//在网上看到到的基本都是一下几句,测试的时候发现并不能删除快捷方式。
//String appClass = activity.getPackageName()+"."+ activity.getLocalClassName();
//ComponentName comp = new ComponentName( activity.getPackageName(), appClass);
//shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
/**改成以下方式能够成功删除,估计是删除和创建需要对应才能找到快捷方式并成功删除**/
Intent intent = new Intent();
intent.setClass(activity, activity.getClass());
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,intent);
activity.sendBroadcast(shortcut);
}
/**
* 判断是否存在快捷方式
* */
public boolean hasShortcut(Activity activity,String shortcutName)
{
String url = "";
int systemversion = Integer.parseInt(android.os.Build.VERSION.SDK);
/*大于8的时候在com.android.launcher2.settings 里查询(未测试)*/
if(systemversion < 8){
url = "content://com.android.launcher.settings/favorites?notify=true";
}else{
url = "content://com.android.launcher2.settings/favorites?notify=true";
}
ContentResolver resolver = activity.getContentResolver();
Cursor cursor = resolver.query(Uri.parse(url), null, "title=?",new String[] {shortcutName}, null);
if (cursor != null && cursor.moveToFirst()) {
cursor.close();
return true;
}
return false;
}
}

调用测试代码:
复制代码 代码如下:

 public class mainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ShortCutSample sample =new ShortCutSample();
String shortcutName=getString(R.string.app_name);
if(sample.hasShortcut(this, shortcutName))
sample.deleteShortCut(this,shortcutName);
else
sample.creatShortCut(this,shortcutName,R.drawable.icon);
}
}

在网上找了很久都是一样的代码,删除那块搞了一个下午才弄好,其实很简单的东东。
第一次发文章,Adnroid新人。多多交流和指导呀。呵呵。

相关文章

  • Android实现微信加号菜单模式

    Android实现微信加号菜单模式

    这篇文章主要为大家详细介绍了Android实现微信加号菜单模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 详解Android中常见的内存优化及内存泄露场景

    详解Android中常见的内存优化及内存泄露场景

    本文主要给大家介绍了Android中常见的内存优化及Android开发中容易造成内存泄露的场景,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-08-08
  • Android开发中Intent.Action各种常见的作用汇总

    Android开发中Intent.Action各种常见的作用汇总

    今天小编就为大家分享一篇关于Android开发中Intent.Action各种常见的作用汇总,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Android BadgeView红点更新信息提示示例代码

    Android BadgeView红点更新信息提示示例代码

    本篇文章主要介绍了Android BadgeView红点更新信息提示示例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Android性能优化方案详情

    Android性能优化方案详情

    这篇文章主要给大家分享的是Android项目工程内的一些性能优化方式,文章围绕Android项目工程优化方式展开内容,需要的朋友可以参考一下文章的具体详情,希望对你有所帮助
    2021-11-11
  • Android Gradle Plug 4.1.0 升级后gradle获取manifest位置失败问题解决

    Android Gradle Plug 4.1.0 升级后gradle获取manifest位置失败问题解决

    这篇文章主要介绍了Android Gradle Plug 4.1.0 升级后gradle获取manifest位置失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Android10自动连接WiFi问题的解决

    Android10自动连接WiFi问题的解决

    这篇文章主要介绍了Android10自动连接WiFi问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Android开发注解排列组合出启动任务ksp

    Android开发注解排列组合出启动任务ksp

    这篇文章主要为大家介绍了Android开发注解排列组合出启动任务ksp示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android SdkVersion的区别及获取版本信息方法

    Android SdkVersion的区别及获取版本信息方法

    下面小编就为大家带来一篇Android SdkVersion的区别及获取版本信息方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Android开发壁纸的验证设置和确认功能实现demo

    Android开发壁纸的验证设置和确认功能实现demo

    android wallpaper包括锁屏壁纸和桌面壁纸,壁纸又区分静态和动态两种。本文详细介绍静态壁纸设置和确认,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-04-04

最新评论