Feedback after you create a shortcut, click the shortcut can not start the program or prompt "not installed program", it seems that the new ROM in the shortcut this piece has been modified (since this article is May 11, estimated to be 2.0 or 2.1 ROM), has been amended, HTC G11 2.3.5rom test passed.
1. Determine if a shortcut has been created (need to be judged in some models)
12345678910111213 |
private
boolean
hasShortcut()
{
boolean
isInstallShortcut =
false
;
final
ContentResolver cr = activity.getContentResolver();
final
String AUTHORITY =
"com.android.launcher.settings"
;
final
Uri CONTENT_URI = Uri.parse(
"content://"
+AUTHORITY +
"/favorites?notify=true"
);
Cursor c = cr.query(CONTENT_URI,
new
String[] {
"title"
,
"iconResource"
},
"title=?"
,
new
String[] {mapViewActivity.getString(R.string.app_name).trim()},
null
);
if
(c!=
null
&& c.getCount()>
0
){
isInstallShortcut =
true
;
}
return
isInstallShortcut ;
}
|
2, create
123456789101112131415161718192021222324 |
/**
* 为程序创建桌面快捷方式
*/
private
void
addShortcut(){
Intent shortcut =
new
Intent(
"com.android.launcher.action.INSTALL_SHORTCUT"
);
//快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
shortcut.putExtra(
"duplicate"
,
false
);
//不允许重复创建
/****************************此方法已失效*************************/
//ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName());
//shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
/******************************end*******************************/
Intent shortcutIntent =
new
Intent(Intent.ACTION_MAIN);
shortcutIntent.setClassName(
this
,
this
.getClass().getName());
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
//快捷方式的图标
ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(
this
, R.drawable.icon);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
sendBroadcast(shortcut);
}
|
3, delete
12345678910111213141516 |
<strong>
/**
* 删除程序的快捷方式
*/
private
void
delShortcut(){
Intent shortcut =
new
Intent(
"com.android.launcher.action.UNINSTALL_SHORTCUT"
);
//快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
String appClass =
this
.getPackageName() +
"."
+
this
.getLocalClassName();
ComponentName comp =
new
ComponentName(
this
.getPackageName(), appClass);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
new
Intent(Intent.ACTION_MAIN).setComponent(comp));
sendBroadcast(shortcut);
}
</strong>
|
3, declaring permissions
Declaring permissions when creating and deleting shortcuts in the Androidmanifest.xml file
12 |
<uses-permission android:name= "com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-permission android:name= "com.android.launcher.permission.UNINSTALL_SHORTCUT" /> |
Android Create and delete desktop shortcuts