Android Api Demos登顶之路(四十四)Launcher Shortcuts
来源:互联网 发布:淘宝王子 删除中差评 编辑:程序博客网 时间:2024/05/22 13:36
通常情况下为一个应用添加快捷方式,只要在launcher中长按这个应用 的图标,系统就会为这个应用在桌面上创建一个快捷方式,名字与图标与launcher中应用的名字与图标相同。利用这种方法创建快捷方式 不需要对activity进行特殊的设置,是由系统自动完成的。
* 在android的早期版本中(我试了Api15的模拟器 该功能已经取消了)还可以通过在系统桌面长按,这时Android会显示用户可以选择添加 的桌面种类列表,选择Shortcut(快捷方式)后,Android会列出所有定义了android.intent.action.CREATE_SHORTCUT的所有应用. 我们就可以选择为列表中的某个activity添加快捷方式。利用这种方法添加快捷方式,需要处理activity,让它支持添加快捷方式。
* 这个demo演示的就是利用这种方式来为activity添加快捷方式。
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/hello_world" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="intent:" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/intent_info" /></LinearLayout>
MainActivity
public class MainActivity extends Activity { private static final String EXTRA_KEY = "com.fishtosky.launchershortcuts.MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在加载视图之前就进行判断,如果接收到的intent是创建快捷方式,那么就调用创建快捷方式的方法后,结束掉自己。 Intent intent = getIntent(); if (Intent.ACTION_CREATE_SHORTCUT.equals(intent.getAction())) { setupShortcut(); finish(); return; } // 如果是正常的打开应用则创建视图,并将意图的信息和意图中传递的数据显示在文本框中。 // 在本例中如果使用launcher中正常的方式打开则extra为空,如果使用桌面的快捷方式打开则intent会传递字符串 // 显示在文本上,以区别两种不同方式打开应用。 setContentView(R.layout.activity_main); TextView intentInfo = (TextView) findViewById(R.id.intent_info); String info = intent.toString(); String extra = intent.getStringExtra(EXTRA_KEY); if (extra != null) { info = info + " " + extra; } intentInfo.setText(info); } //设置快捷方式 private void setupShortcut() { //创建一个意图,用于指明当我们点击快捷方式时需要打开的activity,这里打开的是自己 Intent shortcutIntent=new Intent(Intent.ACTION_MAIN); shortcutIntent.setClassName(this, this.getClass().getName()); shortcutIntent.putExtra(EXTRA_KEY, "这是通过快捷方式打开的应用!"); //再创建一个意图,指明创建快捷方式的意图,快捷方式的名字和图标 Intent intent=new Intent(); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); Parcelable iconResource=Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher); intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); //设置返回的结果 setResult(RESULT_OK, intent); }}
配置文件:一是对activity进行配置。activity-alias在需要重复使用同一个activity时使用,直接理解就是activity的一个别名。比如在本例中我们可以在launcher中直接启动activity,也以可通过长按桌面为activity添加一个快捷方式,两种操作都调用了同一个activity,这个时候就需要用到activity-alias。
<activity-alias android:name="ShortCut" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.CREATE_SHORTCUT" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity-alias>
二是要为创建快捷方式添加权限:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
0 0
- Android Api Demos登顶之路(四十四)Launcher Shortcuts
- Android Api Demos登顶之路(二)
- Android Api Demos登顶之路(三)
- Android Api Demos登顶之路(四)
- Android Api Demos登顶之路(五)
- Android Api Demos登顶之路(六)
- Android Api Demos登顶之路(七)
- Android Api Demos登顶之路(八)
- Android Api Demos登顶之路(九)
- Android Api Demos登顶之路(十)Overscan
- Android Api Demos登顶之路(十一)Persistent state
- Android Api Demos登顶之路(十二)Presentation
- Android Api Demos登顶之路(十四)Quick Contacts
- Android Api Demos登顶之路(十五)Receive Result
- Android Api Demos登顶之路(十六)Recreate
- Android Api Demos登顶之路(十七)Redirection
- Android Api Demos登顶之路(十八)Recorder Activities
- Android Api Demos登顶之路(十九)Rotation Animation
- hdu3790 dijkstra算法
- HashTable 与HashMap 三点区别
- linux下配置jdk环境变量的三种方法
- OpenGL之坐标转换(好文-清晰版)
- storm shuffleGrouping随机分组
- Android Api Demos登顶之路(四十四)Launcher Shortcuts
- HDU 1035.Robot Motion【还是模拟】【8月22】
- 图论 - hdu5348 MZL's endless loop
- C. Divisibility by Eight
- Linux下搭建python + nodejs + express环境
- Sumdiv(快速幂+约数和)
- python学习 3
- 如何选择mysql的存储引擎
- hdu 1239 Calling Extraterrestrial Intelligence Again