1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android快捷方式图标的创建

android快捷方式图标的创建

时间:2021-06-19 22:24:34

相关推荐

android快捷方式图标的创建

1.Launcher为了让其他应用程序能够创建自己的快捷图标,就注册了一个BroadcastReceiver,专门接受其他应用程序发来的快捷图标创建信息。因此,我们只需要根据该broadcastReceiver构造出对应的Intent并装入我们的图标定制信息,最后调用sendBroadcat方法就可以创建一个快捷图标了。

2.首先查看一下android源码,在Launcher的AndroidManifest.xml文件中Install-ShortReceiver的注册信息。

<receiver android:name=".InstallShortReceiver"android:permission="com.android.launcher.permission.INSTALL_SHORTCUT"><intent-filter><action:android:name="com.android.launcher.action.INSTALL_SHORTCUT"></intent-filter></receiver>

如何向这个BroadcastReceiver发送广播,设置如下:

a.应用程序必须要有com.android.launcher.permission.INSTALL权限。

b.要发送的广播的action为com.android.launcher.action.INSTALL_SHORTCUT

c.通过sendBroadcastReveiver就可以发送给Launcher的InstallShortCutReceiver了

3.快捷图标的信息是以附加信息的形式存储在广播出去的Intent对象中的,包括有图标、显示的名称以及用来启动目标组建的Intent这三种信息。我们可以通过putExtra()的重载方法设置相应的信息。

4.由于android 2.0之前和以后的版本Launcher包名有所区别,所以此处还需要判断一下当前sdk的版本,根据不同的版本,所对应的Uri也是不同的。

5.在创建快捷图标之前,还需要进行健壮性判断,如果已经存在,则不创建,否则,就进行创建。

完整代码:

private void createShortCut() {// TODO Auto-generated method stub//先判断该快捷是否存在if(!isExist()){Intent intent = new Intent();//指定动作名称intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");//指定快捷方式的图标Parcelable icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.congsmall);intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);//指定快捷方式的名称intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "应用快捷图标名");//指定快捷图标激活哪个activityIntent i = new Intent();i.setAction(Intent.ACTION_MAIN);i.addCategory(Intent.CATEGORY_LAUNCHER);ComponentName component = new ComponentName(this, MainActivity.class);i.setComponent(component);intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i);sendBroadcast(intent);}}

private boolean isExist(){boolean isExist = false;int version = getSdkVersion();Uri uri = null;if(version < 2.0){uri = Uri.parse("content://com.android.launcher.settings/favorites");}else{uri = Uri.parse("content://com.android.launcher2.settings/favorites");}String selection = " title = ?";String[] selectionArgs = new String[]{"应用快捷图标名"};//此处只是简单判断Cursor c = getContentResolver().query(uri, null, selection, selectionArgs, null);if(c.getCount() > 0){isExist = true;}c.close();return isExist;}/*** 得到当前系统sdk版本* @return*/private int getSdkVersion(){return android.os.Build.VERSION.SDK_INT;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。