Android 创建/验证/删除桌面快捷方式(已测试可用)
Android 创建/验证/删除桌面快捷方式(已测试可用)
发布时间:2016-12-28 来源:查字典编辑
摘要:测试环境为Adnroid2.1以上。第一步:AndroidManifest.xml权限配置:添加快捷方式权限:复制代码代码如下:验证快捷方式...

测试环境为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新人。多多交流和指导呀。呵呵。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类