Android 利用 <activity-alias> 動(dòng)態(tài)改變 App 桌面圖標(biāo)

參考文章:Dovar-66的博客

<activity-alias>介紹:

大家知道,對(duì)于 Activity 組件听隐,使用時(shí)需要在 Manifest 文件中通過(guò) 標(biāo)簽注冊(cè) name补鼻、theme、intent-filter 等相關(guān)屬性信息雅任,然后通過(guò) Intent 操作便可以啟動(dòng)對(duì)應(yīng) Activity风范。殊不知,我們還能通過(guò) <activity-alias> 標(biāo)簽為每個(gè) Activity 注冊(cè)一個(gè)“別名”沪么,通過(guò)這個(gè)別名也能啟動(dòng)對(duì)應(yīng)的目標(biāo) Activity硼婿。我們來(lái)看一下這個(gè)“別名”能夠設(shè)置哪些屬性:

 <activity android:name="com.sunnews.dodo.SplashActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity-alias
            android:name="com.sunnews.dodo.SplashAliasActivity"
            android:targetActivity="com.sunnews.dodo.SplashActivity"
            android:label="新消息!Do"
            android:icon="@mipmap/ic_launcher"
            android:enabled="false">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity-alias>

可以看出,大部分屬性與 <Activity>
標(biāo)簽的屬性一致禽车,簡(jiǎn)單分析一下:
android:enabled 屬性寇漫,布爾類型,是否開啟別名設(shè)置殉摔,默認(rèn)值為 true州胳;
android:exported 屬性,布爾類型逸月,是否支持其他應(yīng)用通過(guò)這個(gè)別名訪問(wèn)目標(biāo) Activity栓撞,默認(rèn)值為 true;
android:icon 和 label 屬性:類似 <activity>
標(biāo)簽彻采,表示目標(biāo) Activity 的顯示圖標(biāo)和標(biāo)簽腐缤;
android:name 屬性:Activity 別名捌归,在 <activity>
標(biāo)簽中肛响, name 屬性必須與對(duì)應(yīng) Activity 文件的名字保持一致,而這里的別名可任意設(shè)置惜索,保證唯一性即可特笋;
android:permission 屬性:權(quán)限設(shè)置,對(duì)別名的使用加以限制巾兆,詳細(xì)屬性值參考開發(fā)者官網(wǎng)對(duì) 權(quán)限部分 的說(shuō)明猎物;
android:targetActivity 屬性:指定別名能夠啟動(dòng)的目標(biāo) Activity,注意角塑,屬性值一定要對(duì)應(yīng)到 <activity>
標(biāo)簽中的 name 屬性蔫磨,并且該 <activity>
標(biāo)簽一定要位于 <activity-alias>
標(biāo)簽前面;
注意看圃伶,在別名設(shè)置中添加了 <intent-filter> 標(biāo)簽堤如,與 targetActivity 的設(shè)置一致:
android.intent.action.MAIN 表示這個(gè)別名設(shè)置是整個(gè)應(yīng)用的入口蒲列,應(yīng)用啟動(dòng)時(shí)第一個(gè)創(chuàng)建的就是這個(gè) Activity;
android.intent.category.LAUNCHER 表示這個(gè)別名設(shè)置將出現(xiàn)在桌面 Launcher 應(yīng)用上搀罢;
至于其他屬性蝗岖,<activity> 標(biāo)簽中也有相應(yīng)設(shè)置,只是通常我們?cè)?<application> 標(biāo)簽中統(tǒng)一設(shè)置而已榔至,然后<activity> 標(biāo)簽?zāi)J(rèn)繼承<application> 標(biāo)簽中的設(shè)置抵赢。上述代碼還有一點(diǎn)需要注意的是,android:enabled 屬性設(shè)為 false唧取,否則運(yùn)行時(shí)將會(huì)在桌面上出現(xiàn)兩個(gè)相同功能但不同顯示的應(yīng)用圖標(biāo)和名稱铅鲤。

動(dòng)態(tài)改變App桌面圖標(biāo):

變換圖標(biāo)

 PackageManager pm = MyApplication.appContext.getPackageManager();
        pm.setComponentEnabledSetting(new ComponentName(MyApplication.appContext, "com.sunnews.dodo.SplashActivity"),
               PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
        pm.setComponentEnabledSetting(new ComponentName(MyApplication.appContext, "com.sunnews.dodo.SplashAliasActivity"),
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

換回圖標(biāo)

 PackageManager pm = MyApplication.appContext.getPackageManager();
        pm.setComponentEnabledSetting(new ComponentName(MyApplication.appContext, "com.sunnews.dodo.SplashAliasActivity"),
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
        pm.setComponentEnabledSetting(new ComponentName(MyApplication.appContext, "com.sunnews.dodo.SplashActivity"),
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

效果圖:

GIF.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市枫弟,隨后出現(xiàn)的幾起案子彩匕,更是在濱河造成了極大的恐慌,老刑警劉巖媒区,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驼仪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡袜漩,警方通過(guò)查閱死者的電腦和手機(jī)绪爸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宙攻,“玉大人奠货,你說(shuō)我怎么就攤上這事∽颍” “怎么了递惋?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)溢陪。 經(jīng)常有香客問(wèn)我萍虽,道長(zhǎng),這世上最難降的妖魔是什么形真? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任杉编,我火速辦了婚禮,結(jié)果婚禮上咆霜,老公的妹妹穿的比我還像新娘邓馒。我一直安慰自己,他們只是感情好蛾坯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布光酣。 她就那樣靜靜地躺著,像睡著了一般脉课。 火紅的嫁衣襯著肌膚如雪救军。 梳的紋絲不亂的頭發(fā)上改览,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音缤言,去河邊找鬼宝当。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胆萧,可吹牛的內(nèi)容都是我干的庆揩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼跌穗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼订晌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蚌吸,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锈拨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后羹唠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奕枢,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年佩微,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缝彬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哺眯,死狀恐怖谷浅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奶卓,我是刑警寧澤一疯,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站夺姑,受9級(jí)特大地震影響墩邀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瑟幕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一磕蒲、第九天 我趴在偏房一處隱蔽的房頂上張望留潦。 院中可真熱鬧只盹,春花似錦、人聲如沸兔院。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坊萝。三九已至孵稽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背转捕。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工胳螟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人接校。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓猛频,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蛛勉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹿寻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,499評(píng)論 25 707
  • Application 標(biāo)簽 android:allowTaskReparenting android:allow...
    Shawn_Dut閱讀 7,762評(píng)論 2 61
  • 早起,可以說(shuō)是通宵沒(méi)睡了诽凌,連著兩天這樣了毡熏,傷不起 記賬完成 運(yùn)動(dòng),下雨了 晚安啦
    饞小周閱讀 159評(píng)論 1 1
  • 寸心暫任還新畫侣诵,尺素頻申借舊書痢法。 梅雨霏霏來(lái)已久,夏雷陣陣悔當(dāng)初杜顺。 【行者點(diǎn)評(píng)】 這首詩(shī)無(wú)題疯暑,其實(shí)寫的是相思,我建...
    林香砌閱讀 187評(píng)論 0 7
  • 冬季釣什么魚哑舒? 一般家養(yǎng)魚如青魚妇拯、草魚、鳊魚等在氣溫15度以下時(shí)食欲減退洗鸵,8度以下則靜臥深水中越锈,進(jìn)入半冬眠狀態(tài),很...
    Dee_Yu閱讀 252評(píng)論 0 0