Android之在launcher里面动态加载桌面图标

举报
chenyu 发表于 2021/07/27 00:30:08 2021/07/27
【摘要】 1、在手机桌面加载图标方式          1)、动态加载         Launcher.javaprivate void addSourceList() { Intent launchIntent = new In...

1、在手机桌面加载图标方式

         1)、动态加载

       


  
  1. Launcher.java
  2. private void addSourceList() {
  3. Intent launchIntent = new Intent(this, RcGrpActivity.class);
  4. launchIntent.setAction(Intent.ACTION_MAIN);
  5. launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  6. Intent addIntent = new Intent();
  7. addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launchIntent);
  8. addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.source_list));
  9. addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
  10. ShortcutIconResource.fromContext(this, R.drawable.keycard));
  11. ShortcutInfo shortcut = mModel.infoFromShortcutIntent(this, addIntent);
  12. shortcut.deletable = false;
  13. shortcut.titleResource = getResources().getResourceName(R.string.source_list);
  14. shortcut.presetItemId = getResources().getInteger(R.integer.preset_source_list_icon);
  15. if (LauncherModel.presetItemExists(this, shortcut.presetItemId)) {
  16. return;
  17. }
  18. ArrayList<ItemInfo> list = new ArrayList<ItemInfo>();
  19. list.add(shortcut);
  20. mModel.addAndBindAddedApps(this, list, new ArrayList<AppInfo>(), true);
  21. }
  22. LauncherModel.java
  23. static boolean presetItemExists(Context context, int presetItemId) {
  24. final ContentResolver cr = context.getContentResolver();
  25. Cursor c = cr.query(LauncherSettings.Favorites.CONTENT_URI,
  26. new String[]{"title"},
  27. "presetItemId=?",
  28. new String[]{Integer.toString(presetItemId)},
  29. null);
  30. if (c == null) {
  31. return false;
  32. }
  33. try {
  34. return c.moveToFirst();
  35. } finally {
  36. c.close();
  37. }
  38. }


    优点:不需要平板适配

 

 

 

     2)、静态加载

     通过xml文件加载

      1、xml文件

 


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <favorites xmlns:launcher="http://schemas.android.com/apk/res-auto">
  3. <shortcut
  4. launcher:uri="#Intent;action=com.sangfor.action.ACTION_OPEN_RESOURCE;category=android.intent.category.DEFAULT;end"
  5. launcher:iconRes="@drawable/ic_setting_app"
  6. launcher:titleRes="@string/source_list"
  7. launcher:container="-100"
  8. launcher:screen="0"
  9. launcher:x="2"
  10. launcher:y="2"
  11. launcher:deletable="false"
  12. launcher:presetItemId="@integer/preset_settings_icon"
  13. />
  14. </favorites>

 

 


     2、  AndroidManifest.xml

 

 

 


  
  1. <activity
  2. android:name="com.sangfor.vpn.client.phone.resource.RcGrpActivity"
  3. android:configChanges="orientation|keyboardHidden|screenSize"
  4. android:label="@string/about"
  5. android:screenOrientation="behind"
  6. android:theme="@android:style/Theme.Light.NoTitleBar" >
  7. <intent-filter>
  8. <action android:name="com.sangfor.action.ACTION_OPEN_RESOURCE" />
  9. <category android:name="android.intent.category.DEFAULT" />
  10. </intent-filter>
  11. </activity>

 

 

 

 

 

 

 

 

 

 

 

 

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/75268951

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。