Android中一個(gè)應(yīng)用實(shí)現(xiàn)多個(gè)圖標(biāo)的幾種方式
前言
最近因?yàn)樾滦枨笮枰业膽?yīng)用將有多個(gè)ICON入口..最終選擇了 activity-alias , 其實(shí)實(shí)現(xiàn)多圖標(biāo)有好幾種方式,下面就給大家總結(jié)下,分享出來供大家參考學(xué)習(xí):
1. 多Activity + intent-filter方式
因?yàn)閘auncher會掃描app中含有以下intent-filter屬性的標(biāo)簽, 有的話就會將其添加到桌面.
所以只要在你想添加到桌面的activity下加上以下標(biāo)簽即可.
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
2. activity-alias方式
上面第一種方式對于一個(gè)activity的要求是沒法做的, 只能通過多寫幾個(gè)入口Activity+ 跳轉(zhuǎn)參數(shù)的方式來解決, 而 activity-alias方式就可以很好解決該問題.
activity-alias中, android:name
就是你定義這個(gè)activity為什么名字, 你通過點(diǎn)擊這個(gè)圖標(biāo)進(jìn)入的話, 在代碼中
getIntent().getComponent().getClassName()
可以獲取到該名字, targetActivity 就是你點(diǎn)擊該圖標(biāo)后的目標(biāo)activity. 上面代碼是寫在目標(biāo)activity里面的,獲取到的名字依然是我們定義的名字哦. 這樣就可以通過這個(gè)判斷是通過哪個(gè)入口進(jìn)來的了.
<activity-alias android:name="@string/altman" android:exported="true" android:icon="@drawable/speech_01" android:label="@string/altman_app_name" android:screenOrientation="landscape" android:targetActivity="com.avatar.dialog.DialogActivity" android:theme="@style/DialogActivityTheme" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias>
3. 網(wǎng)頁標(biāo)簽-添加快捷方式
這只是針對特殊情形, 比如UC瀏覽器創(chuàng)建一個(gè)網(wǎng)頁標(biāo)簽在桌面上,是向桌面應(yīng)用(launcher)發(fā)送相關(guān)action的廣播,相關(guān)的action如下:
public static final String ACTION_ADD_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT";
需要的權(quán)限:
<!-- 添加快捷方式 --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <!-- 移除快捷方式 --> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> <!-- 查詢快捷方式 --> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
添加圖標(biāo)
private void addShortcut(String name) { Intent addShortcutIntent = new Intent(ACTION_ADD_SHORTCUT); // 不允許重復(fù)創(chuàng)建 addShortcutIntent.putExtra("duplicate", false);// 經(jīng)測試不是根據(jù)快捷方式的名字判斷重復(fù)的 // 應(yīng)該是根據(jù)快鏈的Intent來判斷是否重復(fù)的,即Intent.EXTRA_SHORTCUT_INTENT字段的value // 但是名稱不同時(shí),雖然有的手機(jī)系統(tǒng)會顯示Toast提示重復(fù),仍然會建立快鏈 // 屏幕上沒有空間時(shí)會提示 // 注意:重復(fù)創(chuàng)建的行為MIUI和三星手機(jī)上不太一樣,小米上似乎不能重復(fù)創(chuàng)建快捷方式 // 名字 addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name); // 圖標(biāo) addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(MainActivity.this, R.drawable.ic_launcher)); // 設(shè)置關(guān)聯(lián)程序 Intent launcherIntent = new Intent(Intent.ACTION_MAIN); launcherIntent.setClass(MainActivity.this, MainActivity.class); launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER); addShortcutIntent .putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent); // 發(fā)送廣播 sendBroadcast(addShortcutIntent); }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android實(shí)現(xiàn)WIFI和GPRS網(wǎng)絡(luò)的切換
這篇文章主要介紹了Android實(shí)現(xiàn)WIFI和GPRS網(wǎng)絡(luò)的切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11Android自定義AvatarImageView實(shí)現(xiàn)頭像顯示效果
這篇文章主要為大家詳細(xì)介紹了Android自定義AvatarImageView實(shí)現(xiàn)頭像顯示效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Android實(shí)現(xiàn)截圖和分享功能的代碼
截圖和分享功能大家都玩過,下面通過本文給大家介紹Android實(shí)現(xiàn)截圖和分享功能,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-07-07flutter開發(fā)的app項(xiàng)目?打包成web
如果你的Flutter版本低于2.0,請先升級Flutter版本,創(chuàng)建一個(gè)web文件夾來存放web相關(guān)的資源,使用HTML渲染器打包,該渲染器提供的打開速度最快,并且具有良好的瀏覽器兼容性,使用默認(rèn)設(shè)置進(jìn)行打包,提供的打開速度為一般,但依然保持良好的瀏覽器兼容性2024-08-08淺談關(guān)于Android路由的實(shí)現(xiàn)
本篇文章主要介紹了淺談關(guān)于Android路由的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10Flutter實(shí)現(xiàn)一個(gè)支持漸變背景的Button示例詳解
這篇文章主要為大家介紹了Flutter實(shí)現(xiàn)一個(gè)支持漸變背景的Button示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09ionic監(jiān)聽android返回鍵實(shí)現(xiàn)“再按一次退出”功能
本篇文章主要介紹了ionic監(jiān)聽android返回鍵實(shí)現(xiàn)“再按一次退出”功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-02-02