Android-Launcher開發之ShortCut(1)
來源:程序員人生 發布時間:2014-09-05 19:02:47 閱讀次數:2564次
以下源碼來自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)

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);
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈