Re: [問題]APP兒童模式與老人模式開發原理

看板java作者 (jason)時間8年前 (2016/11/19 10:52), 8年前編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
您好,假設小弟沒有誤解您的意思: 您想讓按下 home 鍵時,變成自訂主頁,並且不出現在總覽畫面? 這樣的功能實現是透過 Activity 沒錯 並且平常所使用的系統主畫面,就是由 Activity 實現的, 點擊 app 圖示,打開應用,則是透過 startActivity() 送出 intent。 官方原碼可以去這邊看 https://android.googlesource.com/platform/packages/apps/Launcher3/ 在這之前得知道 1. Activity 是搭配 Task 運作, Task 是 『相關』 Activity 之集合 , 且實作堆疊的資料結構 (LIFO) 。 2. Intent 分為 明確式 (Explicit) 與 隱含示 (Implicit), 明示就是有確切的給予目標類別 如 new Intent(this, OtherActivity.class); 其他都是隱含示。 實作開始: 1. 在 AndroidManifest.xml 中,找到想作為主頁的 Activity 的 start tag <>, 加入 android:launchMode="singleTask" android:taskAffinity="" android:stateNotNeeded="true" 第一行的作用是: 改變 Activity 的 『啟動模式』, 讓 Task 的 底端 保有此 Activity 的實例 。 第二行的作用是: 所有 Activity 預設的 taskAffinity 都是其 Package, 這裡設為空字串,代表不隸屬於其他 Task 第三行的作用是: 不接收狀態 2. 接著, 在該 Activity 的 <intent-filter> </intent-filter> 中, 加入 <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.HOME" /> 第一行的作用是: 確保該 Activity 能接收到所有的 隱含式 Intent 第二行的作用是: 設定此 Activity 為裝置的首頁,需搭配前者使用 大概會長這個樣子 https://pastebin.com/embed_iframe/wrQCwk5x 希望有幫到你~ 參考資料: https://developer.android.com/reference/android/content/Intent.html -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.154.218 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1479523930.A.F1C.html ※ 編輯: Jasonzheng (42.72.154.218), 11/19/2016 11:03:32

11/19 20:50, , 1F
好人給推
11/19 20:50, 1F

11/20 00:21, , 2F
非常感謝熱心的版大! 看完了版大分享的資料之後茅塞頓開
11/20 00:21, 2F
文章代碼(AID): #1OBxvQyS (java)
文章代碼(AID): #1OBxvQyS (java)