Android--创建快捷方式
manifest 中添加权限:
"com.android.launcher.permission.READ_SETTINGS"/>
"com.android.launcher.permission.INSTALL_SHORTCUT"
/>
在点击快捷方式对应的那个activity添加属性:
"android.intent.action.MAIN" /> "android.intent.category.LAUNCHER"
/>
"android.intent.action.CREATE_SHORTCUT"> |
主要代码如下:
import
android.content.ContentResolver;
import
android.content.Intent;
import
android.content.Intent.ShortcutIconResource;
import
android.database.Cursor;
import
android.graphics.BitmapFactory;
import
android.net.Uri;
import
android.os.Bundle;
public
class
AddShortCutActivity
extends
Activity {
@Override
public
void
onCreate(Bundle
savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
boolean
flag
=IfaddShortCut();
//如果已经创建,则不需要在创建
if
(flag==
false
){
addShortCut();
}
}
public
void
addShortCut(){
Intent shortcut =
new
Intent(
"com.android.launcher.action.INSTALL_SHORTCUT"
);
// 设置属性
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
getResources().getString(R.string.app_name));
ShortcutIconResource iconRes =
Intent.ShortcutIconResource.fromContext(AddShortCutActivity.
this
,
R.drawable.icon);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON,iconRes);
// 是否允许重复创建
shortcut.putExtra(
"duplicate"
,
false
);
Intent intent =
new
Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClass(AddShortCutActivity.
this
,
AddShortCutActivity.
class
);
// 设置启动程序
System.out.println(
"createIcon"
);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
intent);
AddShortCutActivity.
this
.sendBroadcast(shortcut);
}
public
boolean
IfaddShortCut(){
boolean
isInstallShortcut =
false
;
final
ContentResolver cr =
AddShortCutActivity.
this
.getContentResolver();
//本人的2.2系统是”com.android.launcher2.settings”,网上见其他的为"com.android.launcher.settings"
final
String AUTHORITY =
"com.android.launcher2.settings"
;
AUTHORITY +
"/favorites?notify=true"
);
Cursor c = cr.query(CONTENT_URI,
new
String[]
{
"title"
,
"iconResource"
},
"title=?"
,
new
String[] {getString(R.string.app_name )
},
null
);
//XXX表示应用名称。
if
(c!=
null
&&
c.getCount()>
0
){
isInstallShortcut =
true
;
System.out.println(
"已创建"
);
}
return
isInstallShortcut ;
}
}