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