Android创建和删除桌面快捷方式
来源:互联网 发布:淘宝招人 编辑:程序博客网 时间:2024/05/21 15:45
有同学方反馈创建快捷方式后,点击快捷方式后不能启动程序或者提示"未安装程序",貌似是新的rom在快捷方式这块做过修改(由于此文是11年5月所出,估计应该是2.0或2.1的rom),现已修正,HTC G11 2.3.5rom测试通过.
1,判断是否已经创建了快捷方式(在某些机型中需要判断)
1
2
3
4
5
6
7
8
9
10
11
12
13
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, 创建
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* 为程序创建桌面快捷方式
*/
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, 删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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, 声明权限
在AndroidManifest.xml 文件中声明 创建和删除快捷方式时声明权限
1
2
<uses-permission android:name=
"com.android.launcher.permission.INSTALL_SHORTCUT"
/>
<uses-permission android:name=
"com.android.launcher.permission.UNINSTALL_SHORTCUT"
/>
0 0
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式 【转】
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- Android创建和删除桌面快捷方式
- 腾讯调试几点小注意
- 程序员的土命海心
- 使用SVN对Unity进行版本控制
- 那些年我们踩过坑[1]
- JRainbow开发进度
- Android创建和删除桌面快捷方式
- 精选WPHTML+CSS代码举例
- Android中线程通讯类Handler
- sql 语法大全2
- Java 7之传统I/O第3篇 - BufferedInputStream和BufferedOutputStream类
- Matlab功率谱估计
- eclipse @override 报错解决
- [Android]自定义组件示例:使用attrs.xml文件定制RadioButton
- MapReduce工作原理图文详解