Android App多個入口的實現(xiàn)方法
經(jīng)??吹接蠥pp提供多個入口,就是桌面上顯示有多種圖標,點不同圖標進入不同的功能頁。
基本實現(xiàn)很簡單,以下是步驟。
1. AndroidManifest.xml里注冊別名。
在 <application> 里添加 <activity-alias>
<activity-alias
android:name=".test"
android:enabled="false"
android:icon="@drawable/applogo"
android:label="@string/app_name"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:targetActivity=".splashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
說明一下:
android:name 參數(shù)就是這個入口的名稱。
android:enabled 打開和關閉的參數(shù)。
android:icon 入口顯示的圖標,這樣就可以給不同的入口設置不同的圖標了。
android:label 就是桌面上顯示的名稱。
android:targetActivity 是重點,就是你點擊了不同的入口會選擇進入的頁面。通過這個就能設置不同入口的不同功能了。
搞定,So easy!。
不要急,我們拓展一下。
2.動態(tài)更新入口。
剛才我們設置了``````,通過名稱,我們就可以使用 PackageManager 對他進行操作了。
假設我們有個主要的 LAUNCHER ,像這樣名叫 splashActivity :
<activity
android:name=".splashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/FirstTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
以及一個上面這樣的 activity-alias
我們通過 PackageManager 的 setComponentEnabledSetting 方法就可以關閉和打開入口:
private ComponentName mDefault = getComponentName();
private ComponentName mDoubleSpring = new ComponentName(getBaseContext(),"com.boosj.boosjapp.test");
private PackageManager mPm = getApplicationContext().getPackageManager();
disableComponent(mDefault);
enableComponent(mDoubleSpring);
private void enableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);
}
private void disableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
}
這個例子中就關閉了主入口,僅僅保留了test入口。執(zhí)行后查看桌面就會發(fā)現(xiàn)只剩下test的入口圖標了。
當然,也可以給他加上條件,實現(xiàn)動態(tài)自動更新。
private ComponentName mDefault = getComponentName();
private ComponentName mDoubleSpring = new ComponentName(getBaseContext(),"com.boosj.boosjapp.test");
private PackageManager mPm = getApplicationContext().getPackageManager();
/**
* 計算是否在日期范圍內
*/
try {
Date date = new Date();
Log.d("LOGCAT",mathFactory.Date2ms("2018-03-01 00:00:00")+"_"+date.getTime());
if (mathFactory.Date2ms("2018-03-01 00:00:00")>date.getTime()) {
disableComponent(mDefault);
enableComponent(mDoubleSpring);
}else {
enableComponent(mDefault);
disableComponent(mDoubleSpring);
}
}catch (Exception e){
enableComponent(mDefault);
disableComponent(mDoubleSpring);
}
private void enableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);
}
private void disableComponent(ComponentName componentName) {
mPm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
}
這個例子中,實現(xiàn)了2018.3.1日前桌面會顯示 activity-alias 的圖標,而原來的主要圖標被隱藏了。等到2018.3.1過完,圖標又回復原樣,
3.一個小問題。
這個方法有個問題,就是在主 LAUNCHER disable后,如果要更新,就會報找不到 LAUNCHER 文件的錯誤而使App崩潰。而不讓更新顯然是不可能的。所以那種只顯示一個圖標,按條件動態(tài)更新的需求,用此方法是恐怕不能做到了。
(或者有什么更好的主意,歡迎探討。)
這個方法其實本來是想做App圖標的動態(tài)更新的。(然而最終失敗了,具體原因就是上面說的崩潰問題。)
還是把他作為多入口的方法記錄一下吧。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android開發(fā)使用Message對象分發(fā)必備知識點詳解
這篇文章主要為大家介紹了Android開發(fā)使用Message對象分發(fā)必備知識點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
Android tabLayout+recyclerView實現(xiàn)錨點定位的示例
這篇文章主要介紹了Android tabLayout+recyclerView實現(xiàn)錨點定位的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
微信小程序—微信跳一跳,Android游戲助手(外掛)使用教程詳解
這篇文章主要介紹了微信小程序—微信跳一跳,Android游戲助手(外掛)使用教程詳解,需要的朋友可以參考下2018-01-01
Android onMeasure與onDraw及自定義屬性使用示例
這篇文章主要介紹了Android onMeasure與onDraw及自定義屬性使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-02-02
Andriod arcgis保存Mapview為圖片的實例代碼
這篇文章主要介紹了Andriod arcgis保存Mapview為圖片的實例代碼 的相關資料,需要的朋友可以參考下2016-03-03
Android開發(fā)實現(xiàn)ListView點擊item改變顏色功能示例
這篇文章主要介紹了Android開發(fā)實現(xiàn)ListView點擊item改變顏色功能,涉及Android布局及響應事件動態(tài)變換元素屬性相關操作技巧,需要的朋友可以參考下2017-11-11

