简单分析Android中添加shortcut方面的源码(3)

它推荐使用activity-alias来提供CREATE_SHORTCUT这个IntentFilter,这样可以通过label和icon属性来自定义picker那个activity中显示这个shortcut的名称和图标,<action Android:name="android.intent.action.CREATE_SHORTCUT" />分析在上面第二步。回到这个activity中,在setupShortcut()方法中,设置了上面第三步中所描述Intent,这个activity同时是那个当点击shortcut时所指向的那个具体功能的activity,所以intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent)指向了自己。最后别忘了:

setResult(RESULT_OK, intent);  

通过其返回到Launcher中。

有时我们会看到有些应用一安装完就在桌面添加了一个shortcut或是程序中可以点击一下按钮就在桌面创建一个shortcut,这时我们要用到Launcher中的一个广播接收者,在Launcher的manifest文件中:

<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>  

大家可以去看下这个广播接收者的源码。
下面通过一个例子来说明下用法:通过点击一个按钮在桌面创建一个shortcut。

TestCreateShortcut.java

public class TestCreateShortcut extends Activity {       @Override       protected void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.test_shortcut);           Button button = (Button) findViewById(R.id.install);           button.setOnClickListener(new OnClickListener() {               @Override               public void onClick(View v) {                   Intent intent = new Intent();                   //install_shortcut action                    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");                   //点击shortcut时进入的activity,这里是自己                    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(                           TestCreateShortcut.this, TestCreateShortcut.class));                   //shortcut的name                    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "MyShortcut");                   Parcelable iconResource = Intent.ShortcutIconResource                           .fromContext(TestCreateShortcut.this, R.drawable.icon);                   //shortcut的icon                    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,                           iconResource);                   //是否可以重复放置shortcut,默认true                    intent.putExtra("duplicate"false);                   sendBroadcast(intent);               }           });       }   }  

还有别忘了在你的manifest文件中加上这个权限:

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

OK.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2eda48e3b1e6b2dd68d600664b1675e2.html