快捷方式

安卓系统可以有专门的桌面,跟WINDOWS的桌面很像,可以选择放置哪些app,不放置哪些app,还可以添加小组件(app widget)。而所有程序会放置在专门的界面中。这一点跟ios有些不一样。当然,很多rom可以选择跟ios一样的单屏界面,所有的app都会显示。具体的没有操作过,因为我就一个手机。而创建快捷方式的方法一般是在所有程序的界面中按住app图标不放,然后拖动到想要的位置。

很多时候我们需要手动在桌面上创建快捷方式,比如在程序中,点击某个按钮以后,在桌面上创建一个快捷方式,可以是程序的主快捷方式,也可以是某个单独的activity的快捷方式。

方式一

Intent有一个Action : ACTION_CREATE_SHORTCUT
这个也是创建快捷方式的动作,具体方法是长按桌面,然后选择创建快捷方式。记得以前的手机有这个操作,但是当前手机galaxy note3 n9008 with android 5.0 里面没有这个操作了。所以没有办法测试。

方式二

手动创建的办法,也就是最开始我说的办法,是发送一个消息,让launcher创建一个快捷方式。
所以Action对应为: com.android.launcher.action.INSTALL_SHORTCUT
Launcher就是android的桌面程序,开机以后运行这个launcher就显示桌面,所以各个厂商在定制系统的时候就会定制这个launcher程序。

创建快捷方式的办法:

1, 添加一个permission
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
这个是一个自定义的permission,所以如果没有添加,也不会报错,但是运行没有效果。

2, 定义一个点击快捷方式以后的动作

Intent actionIntent = new Intent();
actionIntent.setClass(this,LocationActivity.class);

这样定义就可以启动,但是有一个问题,如果程序被卸载,那么快捷方式会保留在桌面上。如果要快捷方式也一起被卸载,那么需要添加 :

actionIntent.setAction(Intent.ACTION_MAIN)
            .addCategory(Intent.CATEGORY_LAUNCHER);

3,定义一个添加快捷方式的intent

Intent addShortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
//图标资源
Inetne.ShortcutIconResource icon = Intent.ShortcutIconResource.fromContext(
                      this,
                      R.mipmap.ic_launcher
                ));
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,actionIntent)//添加动作
                .putExtra(Intent.EXTRA_SHORTCUT_NAME,"Location")//添加文字
                .putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,icon)//添加图标
                .putExtra("duplicate", false);//是否可以重复

如此以来,就可以创建快捷方式了。

4,当然,最后一步,需要发送一个broadcast
sendBroadcast(addShortcutIntent);
这样,launcher就会收到这个broadcast,然后创建快捷方式

有一个问题,我如此操作以后会发现,点击快捷方式以后提示:未安装应用程序,后来在网上找到了解决办法:在对应要启动的activity的manifest文件里面增加一条:android:exported="true"

删除快捷方式 :
跟上面4步基本一样,唯一的区别是,把permission和addShortcutIntent的ACTION两者里面的INSTALL改成UNINSTALL
其他都要设置成一样,因为这样才能找到对应的shortcut。

另外,Android 7.1 增加了一个叫app shortcut的东西,可以像ios的压感操作一样,不用进入app,直接进行一些快捷操作,比如直接给某人打电话,直接发送信息等等。

app widget /应用小组件

大部分android的rom支持桌面小组件,这个小组件直接可以看到里面的内容,也可以点击上面的按钮什么的。比如各种天气组件,时钟组件,新闻组件等等。
这个组件可以定义成不同的大小,增加按钮,或者直接就显示信息。

官网直接就有设置的办法App Widgets

App Widgets就是一个Broadcast Reciever,每次点击组件上的按钮就会发送一个Broadcast,在自己定义的appwidget-provider里面操作这个事件。

具体的官网写的很详细,就看那里的就好了