码迷,mamicode.com
首页 > 移动开发 > 详细

Android-Launcher开发之ShortCut(1)

时间:2014-08-29 09:28:47      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   color   java   io   ar   文件   

以下源码来自Launcher2.3的例子

1.默认每个应用的主Activity都会自带 <category android:name="android.intent.category.LAUNCHER" />,表示该应用安装到Launcher时点击打开该Activity

	<activity
            android:name="org.lean.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

2.Launcher2源码的时序图如下:(在图中,我们可以看到 创建shortcut需要准备2方面东西,一个action.,另一个是我们检索后返回的intent)

bubuko.com,布布扣


2.1.当想在桌面手动创建shortcut,就必须在AndroidManifest.xml文件中添加一个<action />标签.

如下.我们创建一个ShortCutActivity用来处理shortcut的创建

	<activity
            android:name="org.lean.ShortCutActivity" >
            <intent-filter >
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
            </intent-filter>
        </activity>

2.2并在Activity中处理显示的shortCut样式的返回Intent

/**
 * 	@author Lean  @date:2014-8-25  
 */
public class ShortCutActivity extends Activity{
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		if (getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)) {
			Intent returnIntent=new Intent();
			returnIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this,R.drawable.ic_launcher));
			returnIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"A simple shortCut");
			returnIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,new Intent(this,MainActivity.class));
			setResult(RESULT_OK,returnIntent);
			finish();
		}
	}
	
}

3.以上的shortcut只能手动添加,如果想动态添加shortCut 就必须发送广播.Android Launcher2源码提供了如下

	<!-- Intent received used to install shortcuts from other applications -->
        <receiver
            android:name="com.android.launcher2.InstallShortcutReceiver"
            android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
            <intent-filter>
                <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
            </intent-filter>
        </receiver>

这也表示,我们发送广播必须声明权限,还有指定<action />,于是 在我们的应用程序AndroidManifest.xml里 添加

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

同时在代码调用(同时,动态添加shortcut也必须指定其样式和操作意图)

				Intent intent=new Intent();
				intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
				intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,R.drawable.ic_launcher);
				intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"a auto sample");
				intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,new Intent(MainActivity.this,MainActivity.class));
				sendBroadcast(intent);






Android-Launcher开发之ShortCut(1)

标签:android   style   blog   http   color   java   io   ar   文件   

原文地址:http://blog.csdn.net/qq285016127/article/details/38822747

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!