Android中打開其他應(yīng)用(或者系統(tǒng)應(yīng)用)Activity或者Fragment總結(jié)

最近在做項(xiàng)目適配工作,需要打開手機(jī)中設(shè)置頁(yè)面進(jìn)行設(shè)置。國(guó)內(nèi) rom 都是自己改過(guò)的鸿摇,適配起來(lái)也是稍微的麻煩。同一個(gè)功能不同的手機(jī)品牌界面都不一樣劈猿,純粹的用 adb 命令以及 logcat 來(lái)查看每個(gè)手機(jī)對(duì)應(yīng)的頁(yè)面的 Activity 或者 Fragment 以及包名拙吉。簡(jiǎn)單的記錄一下過(guò)程。

使用ADB命令查看當(dāng)前手機(jī)頁(yè)面

在控制臺(tái)中輸入一下命令揪荣,可以查看當(dāng)前頁(yè)面顯示Activity的全部信息

adb shell dumpsys activity top

拿小米手機(jī) (Android 6.0筷黔, MIUI 9.2 )的鎖屏和密碼這個(gè)功能頁(yè)面來(lái)說(shuō)。在控制臺(tái)輸入命令之后仗颈,可以看到一長(zhǎng)串的信息佛舱。

>adb shell dumpsys activity top
TASK com.android.settings id=546
  ACTIVITY com.android.settings/.SubSettings a0c65b8 pid=26715
  
  ....。(先暫時(shí)忽略下邊的信息)

可以看到當(dāng)前的 Activity 的包名 com.android.settings 以及 Activity 的名稱 SubSettings 。這樣不久可以通過(guò)隱士調(diào)用打開頁(yè)面了么名眉? 直接上手操作一波。

 Intent intent = new Intent();
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.SubSettings"));
 getApplicationContext().startActivity(intent);

結(jié)果很尷尬的凰棉,打開的是空白頁(yè)损拢,這又是怎么回事?而且跳轉(zhuǎn)了幾個(gè)頁(yè)面在同時(shí)輸入上邊命令撒犀,也是顯示這個(gè)頁(yè)面 SubSettings 福压。這樣就開始疑惑了,想到這應(yīng)該是小米在上邊改動(dòng)或舞,通過(guò)Fragment來(lái)實(shí)現(xiàn)相關(guān)的功能了荆姆。先看看原生的系統(tǒng)源碼。(網(wǎng)上源碼地址:http://androidxref.com/ )映凳。打開源碼胆筒,發(fā)現(xiàn)沒有實(shí)現(xiàn)什么具體的東西。

7package com.android.settings;
18
19import android.util.Log;
20
21/**
22 * Stub class for showing sub-settings; we can't use the main Settings class
23 * since for our app it is a special singleTask class.
24 */
25public class SubSettings extends SettingsActivity {
26
27    @Override
28    public boolean onNavigateUp() {
29        finish();
30        return true;
31    }
32
33    @Override
34    protected boolean isValidFragment(String fragmentName) {
35        Log.d("SubSettings", "Launching fragment " + fragmentName);
36        return true;
37    }
38}

但是看到源碼中 protected boolean isValidFragment(String fragmentName) 確定了這其實(shí)就是一個(gè) Fragment 的容器诈豌。好那再接著看 dumpsys 命令的返回信息仆救。

      ...
      Active Fragments in b3ed77d:
        #0: MiuiSecuritySettings{7180672 #0 id=0x7f1302dd}
          mFragmentId=#7f1302dd mContainerId=#7f1302dd mTag=null
          mState=5 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
          mAdded=true mRemoving=false mResumed=true mFromLayout=false mInLayout=false
          mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
          mRetainInstance=false mRetaining=false mUserVisibleHint=true
          mFragmentManager=FragmentManager{b3ed77d in HostCallbacks{55daac3}}
          mHost=android.app.Activity$HostCallbacks@55daac3
          mArguments=Bundle[{:android:show_fragment_title=2131365189}]
          mContainer=android.widget.FrameLayout{f4e31d V.E...... ........ 0,0-1080,1920 #7f1302dd app:id/main_content}
          mView=com.miui.internal.widget.ActionBarOverlayLayout{978a7db V.E...... ........ 0,0-1080,1920 #100b004e miui:id/action_bar_overlay_layout}
          Child FragmentManager{8bb4f40 in MiuiSecuritySettings{7180672}}:
            FragmentManager misc state:
              mHost=android.app.Activity$HostCallbacks@55daac3
              mContainer=android.app.Fragment$1@5666e79
              mParent=MiuiSecuritySettings{7180672 #0 id=0x7f1302dd}
              mCurState=5 mStateSaved=false mDestroyed=false
      Added Fragments:
        #0: MiuiSecuritySettings{7180672 #0 id=0x7f1302dd}
      
      ...

看到 Activie Fargment MiuiSecuritySettings 。 但是又不知道包名矫渔,因?yàn)槭謾C(jī)廠商各種改彤蔽,不一定包名就是 settings 。就有通過(guò) Android Studio Logcat 找到了解決方案庙洼。鏈接手機(jī)的時(shí)候 Logcat 打印了各種系統(tǒng)的 log 顿痪。 Ctrl + F 直接搜索一下 MiuiSecuritySettings 。果然找到了

12-05 19:02:59.186 26715-26715/? D/SubSettings: Launching fragment com.android.settings.MiuiSecuritySettings

最后油够,通過(guò)如下的方法蚁袭,啟動(dòng)小米系統(tǒng)的鎖屏和密碼設(shè)置界面

Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,"com.android.settings.MiuiSecuritySettings");//要啟動(dòng)的fragment
intent.putExtra(PreferenceActivity.EXTRA_NO_HEADERS,true);
intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.SubSettings")); //包名,要啟動(dòng)fragment所依賴的Activity
getApplicationContext().startActivity(intent);

其他的頁(yè)面叠聋,應(yīng)該也是大同小異的處理思路撕阎,只能一個(gè)個(gè)手機(jī)來(lái)實(shí)際適配了,并沒有找到一個(gè)很好的解決辦法碌补,挨虏束。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市厦章,隨后出現(xiàn)的幾起案子镇匀,更是在濱河造成了極大的恐慌,老刑警劉巖袜啃,帶你破解...
    沈念sama閱讀 212,332評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汗侵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)晰韵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門发乔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人雪猪,你說(shuō)我怎么就攤上這事栏尚。” “怎么了只恨?”我有些...
    開封第一講書人閱讀 157,812評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵译仗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我官觅,道長(zhǎng)纵菌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,607評(píng)論 1 284
  • 正文 為了忘掉前任休涤,我火速辦了婚禮咱圆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滑绒。我一直安慰自己闷堡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評(píng)論 6 386
  • 文/花漫 我一把揭開白布疑故。 她就那樣靜靜地躺著杠览,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纵势。 梳的紋絲不亂的頭發(fā)上踱阿,一...
    開封第一講書人閱讀 49,919評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音钦铁,去河邊找鬼软舌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛牛曹,可吹牛的內(nèi)容都是我干的佛点。 我是一名探鬼主播,決...
    沈念sama閱讀 39,071評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼黎比,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼超营!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起阅虫,我...
    開封第一講書人閱讀 37,802評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤演闭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后颓帝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體米碰,經(jīng)...
    沈念sama閱讀 44,256評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窝革,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吕座。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虐译。...
    茶點(diǎn)故事閱讀 38,712評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吴趴,靈堂內(nèi)的尸體忽然破棺而出菱蔬,到底是詐尸還是另有隱情,我是刑警寧澤史侣,帶...
    沈念sama閱讀 34,389評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站魏身,受9級(jí)特大地震影響惊橱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜箭昵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評(píng)論 3 316
  • 文/蒙蒙 一税朴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧家制,春花似錦正林、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至涵但,卻和暖如春杈绸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矮瘟。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工瞳脓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澈侠。 一個(gè)月前我還...
    沈念sama閱讀 46,473評(píng)論 2 360
  • 正文 我出身青樓劫侧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親哨啃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烧栋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評(píng)論 2 350

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