Android determines if desktop shortcuts exist

Source: Internet
Author: User
Tags lenovo

In the first two days, an application was made that required real-time access to the desktop shortcut, which could not be obtained under some third-party ROM.

Online a large number of examples are Google native system or Xiaomi, Samsung such systems function, but for third-party ROM can not be obtained such as: HTC, Huawei, a plus, Lenovo.

Why not, try the classmates should know, I do not answer each, directly paste the correct code:


Import Java.util.list;import Android.content.contentresolver;import Android.content.context;import Android.content.intent;import Android.content.pm.packageinfo;import Android.content.pm.packagemanager;import Android.content.pm.providerinfo;import Android.content.pm.resolveinfo;import Android.database.Cursor;import Android.net.uri;import Android.text.textutils;import Android.util.log;public class Launcherutil {private static String authority = Null;public Static Boolean isshortcutexist (context context, String title) {Boolean isinstallshortcut = False;if (Null = = Context | | Textutils.isempty (title)) Return Isinstallshortcut;if (textutils.isempty (authority)) authority = Getauthorityfrompermission (context); final Contentresolver cr = Context.getcontentresolver (); Textutils.isempty (authority)) {try {final Uri Content_uri = uri.parse (authority); Cursor C = cr.query (Content_uri, new string[] {"title", "Iconresource"}, "Title=?", new string[] {title},null);//XXX indicates The name of the app. if (c! = null &AMP;&Amp C.getcount () > 0) {isinstallshortcut = true;} if (null! = C &&!c.isclosed ()) C.close ();} catch (Exception e) {//Todo:handle EXCEPTIONLOG.E ("Isshortcutexist", E.getmessage ());}} return isinstallshortcut;} public static String Getcurrentlauncherpackagename (context context) {Intent Intent = new Intent (intent.action_main); Intent.addcategory (Intent.category_home); ResolveInfo res = Context.getpackagemanager (). Resolveactivity (Intent, 0); if (res = = NULL | | res.activityinfo = NULL) {// should not happen. A Home is always installed, isn ' t it?return ";} if (Res.activityInfo.packageName.equals ("Android")) {return "";} else {return res.activityInfo.packageName;}} public static String Getauthorityfrompermissiondefault (context context) {return getthirdauthorityfrompermission ( Context, "Com.android.launcher.permission.READ_SETTINGS");} public static String getthirdauthorityfrompermission (Context context,string permission) {if (Textutils.isempty ( Permission) {return "";} try {List<packageinfo> packs = Context.getpackagemanager (). Getinstalledpackages (Packagemanager.get_providers); if (packs = = null) { Return "";} for (PackageInfo pack:packs) {providerinfo[] providers = pack.providers;if (providers! = null) {for (Providerinfo provid Er:providers) {if (Permission.equals (provider.readpermission) | | permission.equals (provider.writepermission)) {if (! Textutils.isempty (provider.authority)//Precision match launcher.settings, once again verify && (provider.authority). Contains (". Launcher.settings ")) return provider.authority;}}}} catch (Exception e) {e.printstacktrace ();} Return "";} public static string Getauthorityfrompermission (context context) {//get default string authority = Getauthorityfrompermissiondefault (context);//Get Special third-party if (authority = = NULL | | Authority.trim (). Equals ("")) {String PackageName = Getcurrentlauncherpackagename (context);p ackagename + = ". Permission. Read_settings "; authority = getthirdauthorityfrompermission (context, packagename);} Still not get, direct write Dead if (textutils.isempty (authority)) {INT Sdkint = android.os.build.version.sdk_int;if (Sdkint < 8) {//Android 2.1.x (API 7) and the following authority = "Com.android.lau Ncher.settings ";} else if (Sdkint <) {//Android 4.4 Below authority = "com.android.launcher2.settings";} else {//4.4 and above authority = "com. Android.launcher3.settings ";}} authority = "content://" + Authority + "/favorites?notify=true"; return authority;}}


Finally, don't forget to add all the permissions in the XML

<!--shortcuts related--<uses-permission android:name= "Com.android.launcher.permission.READ_SETTINGS"/> <use S-permission android:name= "Com.android.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name= "Com.android.launcher2.permission.READ_SETTINGS"/> <uses-permission android:name= " Com.android.launcher2.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.android.launcher3.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.android.launcher3.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Org.adw.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Org.adw.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.htc.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.htc.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.qihoo360.launcher.permission.READ_SETTINGS "/> <uses-permission android:name= "Com.qihoo360.launcher.permission.WRITE_SETTINGS"/> <uses-permission Android:name= "Com.lge.launcher.permission.READ_SETTINGS"/> <uses-permission android:name= " Com.lge.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Net.qihoo.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Net.qihoo.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Org.adwfreak.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Org.adwfreak.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Org.adw.launcher_ Donut.permission.READ_SETTINGS "/> <uses-permission android:name=" org.adw.launcher_donut.permission.WRITE_ SETTINGS "/> <uses-permission android:name=" Com.huawei.launcher3.permission.READ_SETTINGS "/> <uses-per    Mission android:name= "Com.huawei.launcher3.permission.WRITE_SETTINGS"/><uses-permission android:name= "Com.fede.launcher.permission.READ_SETTINGS"/> <uses-permission android: Name= "Com.fede.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name= " Com.sec.android.app.twlauncher.settings.READ_SETTINGS "/> <uses-permission android:name=" Com.sec.android.app.twlauncher.settings.WRITE_SETTINGS "/> <uses-permission android:name=" Com.anddoes.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.anddoes.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.tencent.qqlauncher.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.tencent.qqlauncher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.huawei.launcher2.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.huawei.launcher2.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.android.mylauncher.permission.READ_SETTINGS"/> <uses-permission android:name=" Com.android.mylauncher.permission.WRITE_SETTINGS "/> <uses-permissi On android:name= "Com.ebproductions.android.launcher.permission.READ_SETTINGS"/> <uses-permission android: Name= "Com.ebproductions.android.launcher.permission.WRITE_SETTINGS"/> <uses-permission android:name= " Com.oppo.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.oppo.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.lenovo.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.lenovo.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Com.huawei.android.launcher.permission.READ_SETTINGS "/> <uses-permission android:name=" Com.huawei.android.launcher.permission.WRITE_SETTINGS "/> <uses-permission android:name=" Telecom.mdesk.permission.READ_SETTINGS "/> <uses-permission android:name=" Telecom.mdesk.permissIon. Write_settings "/> <uses-permission android:name=" Dianxin.permission.ACCESS_LAUNCHER_DATA "/>



Android determines if desktop shortcuts exist

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.