1. /**
  2. *
  3. * @param context
  4. * @param tname 桌面快捷方式的名字
  5. * @param icon 好友头像
  6. */
  7. public static void addShortCut(Context context, String tname, int icon) {
  8. // 安装的Intent
  9. Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
  10.  
  11. // 快捷名称
  12. shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, tname);
  13. // 快捷图标是允许重复
  14. shortcut.putExtra("duplicate", false);
  15.  
  16. Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
  17. shortcutIntent.putExtra("tName", tname);
  18. shortcutIntent.setClassName("com.example.qqshortcut", "com.example.qqshortcut.MainActivity");
  19. shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  20. shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
  21.  
  22. // 快捷图标
  23. ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(context, icon);
  24. shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
  25.  
  26. // 发送广播
  27. context.sendBroadcast(shortcut);
  28. }
  1. /**
  2. * 判断是否已存在该快捷方式
  3. * @param context
  4. * @param name 快捷方式的名字
  5. * @return
  6. */
  7. public static boolean hasShortcut(Context context,String name)
  8. {
  9. String authority = getAuthorityFromPermission(context,"permission.READ_SETTINGS");
  10. boolean isInstallShortcut = false;
  11. try {
  12. ContentResolver cr = context.getContentResolver();
  13. String url;
  14. if (authority == null) {
  15. int systemversion = Integer.parseInt(android.os.Build.VERSION.SDK);
  16. /*大于8的时候在com.android.launcher2.settings 里查询(未测试)*/
  17. if(systemversion < 8){
  18. url = "content://com.android.launcher.settings/favorites?notify=true";
  19. }else{
  20. url = "content://com.android.launcher2.settings/favorites?notify=true";
  21. }
  22. }else{
  23. url = "content://" + authority + "/favorites?notify=true";
  24. }
  25. Cursor c = cr.query(Uri.parse(url),null,"title=?",
  26. new String[] {name}, null);
  27. if(c!=null && c.moveToFirst()){
  28. c.close();
  29. isInstallShortcut = true ;
  30. }
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. }
  34. return isInstallShortcut ;
  35. }
  1. /**
  2. * 动态获取查询的provider(provider跟SDK版本和厂商有关系,会有所不同),获取provider后,记得在androidManifeset.xml加上对应的权限
  3. * 不同厂商com.android.launcher.permission.READ_SETTINGS权限不同,目前做兼容只能把目前知道的权限都加到配置文件里
  4. * @param context
  5. * @param permission
  6. * @return
  7. */
  8. public static String getAuthorityFromPermission(Context context, String permission){
  9. try {
  10. if (permission == null) return null;
  11. List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);
  12. if (packs != null) {
  13. for (PackageInfo pack : packs) {
  14. ProviderInfo[] providers = pack.providers;
  15. if (providers != null) {
  16. for (ProviderInfo provider : providers) {
  17. Log.e("------", "\r\n【" + provider.readPermission + "】\r\n");
  18. if (provider.readPermission!=null && provider.readPermission.endsWith(permission)) {
  19. return provider.authority;
  20. }
  21. }
  22. }
  23. }
  24. }
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. return null;
  29. }

模仿添加QQ好友桌面快捷方式的更多相关文章

  1. QQ是怎样实现好友桌面快捷方式的?

    QQ是怎样实现好友桌面快捷方式的? 不知道什么时候,QQ推出了好友桌面快捷方式.方便用户和最常保持联系的好友一键联系.核心功能一:若QQ启动了.则双击快捷方式直接打开好友聊天界面:核心功能二:若QQ未 ...

  2. js实现打开网页自动弹出添加QQ好友邀请窗口

    我们有时进一些网面或专题页面会自动弹出一个加为好友的对话框了,在研究了很久之后发现可以直接使用js来实现,下面我们一起来看js实现打开网页自动弹出添加QQ好友邀请窗口的方法. 第一步.JS脚本 这个是 ...

  3. 网站中超链接方式直接添加QQ好友

    使用情景: 在图中点击图片,会弹出添加qq好友的窗口进行好友添加. 链接如下: tencent://AddContact/?fromId=45&fromSubId=1&subcmd=a ...

  4. 使用Javascript无限添加QQ好友原理解析

    做QQ营销的朋友都知道,QQ加好友是有诸多限制的,IP限制,次数限制,二维码限制,人数限制,使用软件自动加好友会遇到各种各样的问题,很多软件通过模拟人工添加QQ号码,在添加几个之后就会遇到腾讯规则限制 ...

  5. kailli添加桌面快捷方式

    kailli添加桌面快捷方式 /usr/share/applications/xxx.desktop 注意大小写要与Name对应 [Desktop Entry] Version=1.0 Name=Tu ...

  6. CentOS与ubuntu添加eclipse桌面快捷方式的方法整理

    CentOS环境下用右键添加启动器的方式安装(ubuntu早期版本也是这样的) [1]用rmp包安装jdk, 在/usr/local目录下安装:命令 #rpm -ivh   jdk.rpm 然后#vi ...

  7. java模仿qq好友面板的布局(BoxLayout问题)

    .............. JLabel ll = new JLabel(dlg.getNameText() + ":" + dlg.getIPText(), ii[index] ...

  8. Android 添加、移除和判断 桌面快捷方式图标

    思路: Launcher为了应用程序能够定制自己的快捷图标,就注册了一个 BroadcastReceiver 专门接收其他应用程序发来的快捷图标定制信息.所以只需要根据该 BroadcastRecei ...

  9. Android开发被添加到桌面快捷方式

    Android开发被添加到桌面快捷方式 对于一个希望拥有很多其它用户的应用来说.用户桌面能够说是全部软件的必争之地,假设用户在手机桌面上建立了该软件的快捷方式.用户将会更频繁地使用该软件. 因此,全部 ...

随机推荐

  1. Directx 9 VS2015环境搭建

    安装好Directx9 sdk和vs2015后 打开vs,新建项目 --> c++项目  -->win32控制台应用程序-->空项目 创建项目后,右键项目属性, 包含目录 D:\Pr ...

  2. 学习动态性能表(12)--v$db_object_cache

    学习动态性能表 第12篇--V$DB_OBJECT_CACHE  2007.6.4 本视图提供对象在library cache(shared pool)中对象统计,提供比v$librarycache更 ...

  3. ubuntu下vi文本后出现不正常的情况

    安装vim full版本由于Ubuntu预安装的是tiny版本,所以会导致我们在使用上的产生上述的不便.但是,我们安装了vim的full版本之后,键盘的所有键在vi下就很正常了.首先,要先卸掉旧版的v ...

  4. spark gateway引发:跟踪Cloudera安装服务异常日志跟踪

    spark gateway是用于接收cloudera管理的应用:可以上报数据,不影响正常使用.启动gateway失败,我觉得可能是因为配置问题? 这个问题可能比较深,因为我通过查看日志(clouder ...

  5. navicate笔记

    使用sql语句,在查询中写入sql语句,点击运行即可. 想让表清空,自增id从1开始,右键表选择删减表即可

  6. laravel config文件的使用

    好多东西 由于许多地方都要使用与将来可能发生更改 我们需要把它提取出来 作为配置文件来使用 这样将来要修改的时候 只需要修改一处即可 学习源头: https://blog.csdn.net/linyu ...

  7. 解决sql脚本文件太大无法打开的问题

    as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法 步骤:任务—>生成脚本—> 下一步->高级,选择数据库版本和编写脚本数据类型 ...

  8. mysql函数之五:group_concat mysql 把结果集中的一列数据用指定分隔符转换成一行

    函数使用说明:该函数返回带有来自一个组的连接的非NULL 值的字符串结果.其完整的语法如下 GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {un ...

  9. 服务器启动时Webapp的web.xml中配置的加载顺序

    一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Ser ...

  10. LAMP 2.1Apache不记录指定文件类型日志

    访问日志只需要记地址,不用记录图片. 对无用的图片日志做标记,针对标记做限制.打开 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 把 Erro ...