手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android 创建/验证/删除桌面快捷方式(已测试可用)
Android 创建/验证/删除桌面快捷方式(已测试可用)
摘要:测试环境为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新人。多多交流和指导呀。呵呵。

【Android 创建/验证/删除桌面快捷方式(已测试可用)】相关文章:

Android程序退出完美解决方案兼容所有SDK

Android手机保持屏幕高亮方法

Android模拟器中窗口截图存成文件实现思路及代码

Android 九宫格的实现方法

android 左右滑动+索引图标实现方法与代码

android 为应用程序创建桌面快捷方式技巧分享

Android 获取正在运行的任务和服务的小例子

Android判断屏幕是横屏或是竖屏

Android 五种布局模式

Android 用SQLite实现事务的方法

精品推荐
分类导航