当前位置: 移动技术网 > IT编程>移动开发>Android > Android 创建/验证/删除桌面快捷方式(已测试可用)

Android 创建/验证/删除桌面快捷方式(已测试可用)

2019年07月24日  | 移动技术网IT编程  | 我要评论

武夷山市教育局,北票征婚,wow321

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网