最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android App多個入口的實現(xiàn)方法

 更新時間:2018年02月08日 08:33:34   作者:書柜里的松鼠  
這篇文章主要介紹了Android App多個入口的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

經(jīng)??吹接蠥pp提供多個入口,就是桌面上顯示有多種圖標(biāo),點不同圖標(biāo)進入不同的功能頁。

基本實現(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 打開和關(guān)閉的參數(shù)。

android:icon 入口顯示的圖標(biāo),這樣就可以給不同的入口設(shè)置不同的圖標(biāo)了。

android:label 就是桌面上顯示的名稱。

android:targetActivity 是重點,就是你點擊了不同的入口會選擇進入的頁面。通過這個就能設(shè)置不同入口的不同功能了。

搞定,So easy!。

不要急,我們拓展一下。

2.動態(tài)更新入口。

剛才我們設(shè)置了``````,通過名稱,我們就可以使用 PackageManager 對他進行操作了。

假設(shè)我們有個主要的 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 方法就可以關(guān)閉和打開入口:

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);
 }

這個例子中就關(guān)閉了主入口,僅僅保留了test入口。執(zhí)行后查看桌面就會發(fā)現(xiàn)只剩下test的入口圖標(biāo)了。

當(dāng)然,也可以給他加上條件,實現(xiàn)動態(tài)自動更新。

private ComponentName mDefault = getComponentName();
 private ComponentName mDoubleSpring = new ComponentName(getBaseContext(),"com.boosj.boosjapp.test");
 private PackageManager mPm = getApplicationContext().getPackageManager();

  /**
   * 計算是否在日期范圍內(nèi)
   */
  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 的圖標(biāo),而原來的主要圖標(biāo)被隱藏了。等到2018.3.1過完,圖標(biāo)又回復(fù)原樣,

3.一個小問題。

這個方法有個問題,就是在主 LAUNCHER disable后,如果要更新,就會報找不到 LAUNCHER 文件的錯誤而使App崩潰。而不讓更新顯然是不可能的。所以那種只顯示一個圖標(biāo),按條件動態(tài)更新的需求,用此方法是恐怕不能做到了。

(或者有什么更好的主意,歡迎探討。)

這個方法其實本來是想做App圖標(biāo)的動態(tài)更新的。(然而最終失敗了,具體原因就是上面說的崩潰問題。)

還是把他作為多入口的方法記錄一下吧。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android開發(fā)使用Message對象分發(fā)必備知識點詳解

    Android開發(fā)使用Message對象分發(fā)必備知識點詳解

    這篇文章主要為大家介紹了Android開發(fā)使用Message對象分發(fā)必備知識點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Android中巧妙的實現(xiàn)緩存詳解

    Android中巧妙的實現(xiàn)緩存詳解

    采用緩存,可以進一步大大緩解數(shù)據(jù)交互的壓力,有的時候為了快速查詢會被多次調(diào)用的數(shù)據(jù),或者構(gòu)建比較廢時的實例,我們一般使用緩存的方法。無論大型或小型應(yīng)用,靈活的緩存可以說不僅大大減輕了服務(wù)器的壓力,而且因為更快速的用戶體驗而方便了用戶。下面來一起看看吧。
    2016-11-11
  • Android tabLayout+recyclerView實現(xiàn)錨點定位的示例

    Android tabLayout+recyclerView實現(xiàn)錨點定位的示例

    這篇文章主要介紹了Android tabLayout+recyclerView實現(xiàn)錨點定位的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android編程實現(xiàn)圖標(biāo)拖動效果的方法

    Android編程實現(xiàn)圖標(biāo)拖動效果的方法

    這篇文章主要介紹了Android編程實現(xiàn)圖標(biāo)拖動效果的方法,涉及Android事件響應(yīng)及圖標(biāo)變換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 微信小程序—微信跳一跳,Android游戲助手(外掛)使用教程詳解

    微信小程序—微信跳一跳,Android游戲助手(外掛)使用教程詳解

    這篇文章主要介紹了微信小程序—微信跳一跳,Android游戲助手(外掛)使用教程詳解,需要的朋友可以參考下
    2018-01-01
  • Android onMeasure與onDraw及自定義屬性使用示例

    Android onMeasure與onDraw及自定義屬性使用示例

    這篇文章主要介紹了Android onMeasure與onDraw及自定義屬性使用示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • Android手機管理工具類詳解

    Android手機管理工具類詳解

    這篇文章主要為大家詳細介紹了Android手機管理工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Andriod arcgis保存Mapview為圖片的實例代碼

    Andriod arcgis保存Mapview為圖片的實例代碼

    這篇文章主要介紹了Andriod arcgis保存Mapview為圖片的實例代碼 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Android 無預(yù)覽拍照功能

    Android 無預(yù)覽拍照功能

    最近小編接到一個項目,遇到這樣的需求,要求在后臺拍照并保存功能,也就是無預(yù)覽拍照功能,下面小編給大家?guī)砹藢嵗a,需要的朋友參考下
    2018-02-02
  • Android開發(fā)實現(xiàn)ListView點擊item改變顏色功能示例

    Android開發(fā)實現(xiàn)ListView點擊item改變顏色功能示例

    這篇文章主要介紹了Android開發(fā)實現(xiàn)ListView點擊item改變顏色功能,涉及Android布局及響應(yīng)事件動態(tài)變換元素屬性相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11

最新評論

贞丰县| 奇台县| 古浪县| 福州市| 穆棱市| 方城县| 山阴县| 新宾| 天津市| 泸水县| 高淳县| 普兰县| 义马市| 桂平市| 长治县| 清徐县| 潢川县| 长乐市| 合江县| 新安县| 双柏县| 原阳县| 五寨县| 扎兰屯市| 渑池县| 喀什市| 济阳县| 县级市| 江都市| 秀山| 扶余县| 鄂伦春自治旗| 绩溪县| 水富县| 嘉义市| 萍乡市| 灵山县| 扶风县| 赤水市| 漯河市| 武川县|