Activity跳轉(zhuǎn)方式總結(jié)

一肾档、顯式調(diào)用方法

  1. 方法一:
Intent intent=new Intent(本類臊旭,將要跳轉(zhuǎn)的類);   //Intent intent=new Intent(MainActivity.this,JumpToActivity.class);   
startActivity(intent);
  1. 方法二:
Intent intent2=new  Intent();
intent2.setClass(本類,將要跳轉(zhuǎn)的類);   // intent2.setClass(MainActivity.this,JumpToActivity.class);
startActivity(intent2);
  1. 方法三:(此方式可用于打開其它的應(yīng)用)
Intent intent2=new  Intent();
intent2.setComponent(new ComponentName(MainActivity.this, JumpToActivity.class));
startActivity(intent2);

component庐完,目標(biāo)組件的包或類名稱(完整類名):
在使用component進(jìn)行匹配時(shí)舶治,一般采用以下幾種形式:

intent.setComponent(new ComponentName(getApplicationContext(), JumpToActivity.class));
intent.setComponent(new ComponentName(getApplicationContext(), "com.liujc.test.JumpToActivity"));
intent.setComponent(new ComponentName("com.liujc.test", "com.liujc.test.JumpToActivity"));

如需了解ComponentName分井,請移步Android ComponentName的用法

二:隱式調(diào)用方法

  1. 通過action跳轉(zhuǎn):
Intent intent = new Intent();  
intent.setAction("con.liujc.test.jump");  
startActivity(intent);

需要將要跳轉(zhuǎn)到的Activity在AndroidManifest.xml中設(shè)置action:

<activity android:name=".JumpToActivity" >  
    <intent-filter>  
        <action android:name="con.liujc.test.jump"/>  
        <category android:name="android.intent.category.DEFAULT" />  
    </intent-filter>  
</activity>
  1. 通過Scheme跳轉(zhuǎn)協(xié)議跳轉(zhuǎn):
    android中的scheme是一種頁面內(nèi)跳轉(zhuǎn)協(xié)議霉猛,是一種非常好的實(shí)現(xiàn)機(jī)制尺锚,通過定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個(gè)頁面惜浅;通過scheme協(xié)議瘫辩,服務(wù)器可以定制化告訴App跳轉(zhuǎn)那個(gè)頁面,可以通過通知欄消息定制化跳轉(zhuǎn)頁面坛悉,可以通過H5頁面跳轉(zhuǎn)頁面等伐厌。
    URL Scheme協(xié)議格式:
    scheme://host:port/path **   模式://主機(jī):端口/路徑**
    完整的URL Scheme協(xié)議格式:liujc://goods:8080/goodsDetail?goodsId=20170112
    上面的路徑 Scheme、Host裸影、port弧械、path、query全部包含:
  • liujc代表該Scheme 協(xié)議名稱
  • goods代表Scheme作用于哪個(gè)地址域
  • goodsDetail代表Scheme指定的頁面
  • goodsId代表傳遞的參數(shù)
  • 8080代表該路徑的端口號

URL Scheme如何使用:

  1. 在AndroidManifest.xml中對<activity />標(biāo)簽增加<intent-filter />設(shè)置Scheme:
<activity
            android:name=".GoodsDetailActivity"
            android:theme="@style/AppTheme">
            <!--要想在別的App上能成功調(diào)起App空民,必須添加intent過濾器-->
            <intent-filter>
                <!--協(xié)議部分刃唐,隨便設(shè)置-->
                <data android:scheme="liujc" android:host="goods" android:path="/goodsDetail" android:port="8080"/>
                <!--下面這幾行也必須得設(shè)置-->
                <category android:name="android.intent.category.DEFAULT"/>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
            </intent-filter>
        </activity>
  1. 獲取Scheme跳轉(zhuǎn)的參數(shù):
Uri uri = getIntent().getData();
if (uri != null) {
    // 完整的url信息
    String url = uri.toString();
    Log.e(TAG, "url: " + uri);
    // scheme部分
    String scheme = uri.getScheme();
    Log.e(TAG, "scheme: " + scheme);
    // host部分
    String host = uri.getHost();
    Log.e(TAG, "host: " + host);
    //port部分
    int port = uri.getPort();
    Log.e(TAG, "host: " + port);
    // 訪問路勁
    String path = uri.getPath();
    Log.e(TAG, "path: " + path);
    List<String> pathSegments = uri.getPathSegments();
    // Query部分
    String query = uri.getQuery();
    Log.e(TAG, "query: " + query);
    //獲取指定參數(shù)值
    String goodsId = uri.getQueryParameter("goodsId");
    Log.e(TAG, "goodsId: " + goodsId);
}
  1. 調(diào)用方式:
    網(wǎng)頁上:(使用系統(tǒng)自帶瀏覽器或者谷歌瀏覽器)
    <a href="liujc://goods:8080/goodsDetail?goodsId=20170112">打開商品詳情</a>
    原生調(diào)用:
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("liujc://goods:8080/goodsDetail?goodsId=20170112")); 
startActivity(intent);
  1. 如何判斷一個(gè)Scheme是否有效,有效后再啟動(dòng):
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("liujc://goods:8080/goodsDetail?goodsId=20170112"));
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isValid = !activities.isEmpty();
if (isValid) {
    startActivity(intent);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市界轩,隨后出現(xiàn)的幾起案子画饥,更是在濱河造成了極大的恐慌,老刑警劉巖浊猾,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抖甘,死亡現(xiàn)場離奇詭異,居然都是意外死亡葫慎,警方通過查閱死者的電腦和手機(jī)衔彻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偷办,“玉大人艰额,你說我怎么就攤上這事〗费模” “怎么了柄沮?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我祖搓,道長狱意,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任拯欧,我火速辦了婚禮详囤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镐作。我一直安慰自己纬纪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布滑肉。 她就那樣靜靜地躺著包各,像睡著了一般。 火紅的嫁衣襯著肌膚如雪靶庙。 梳的紋絲不亂的頭發(fā)上问畅,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機(jī)與錄音六荒,去河邊找鬼护姆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掏击,可吹牛的內(nèi)容都是我干的卵皂。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼砚亭,長吁一口氣:“原來是場噩夢啊……” “哼灯变!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捅膘,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤添祸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后寻仗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刃泌,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年署尤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耙替。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡曹体,死狀恐怖俗扇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情混坞,我是刑警寧澤狐援,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站究孕,受9級特大地震影響啥酱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厨诸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一镶殷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧微酬,春花似錦绘趋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至垦江,卻和暖如春帽馋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背比吭。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工绽族, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衩藤。 一個(gè)月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓吧慢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赏表。 傳聞我的和親對象是個(gè)殘疾皇子检诗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349

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

  • Intent組件雖然不是四大組件,但卻是連接四大組件的橋梁瓢剿,學(xué)習(xí)好這個(gè)知識(shí)岁诉,也非常的重要。 一跋选、什么是Intent...
    困惑困惑困惑閱讀 1,503評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,799評論 25 707
  • 看著前方女兒和她同學(xué)的背影涕癣,我在心里就不自覺的比較起來,她同學(xué)個(gè)子很高前标,多開朗漂亮啊坠韩,看看我姑娘;我姑娘比她同學(xué)聰...
    安為閱讀 251評論 0 2
  • pole dance 鋼管舞,以前不知道怎么稱呼地鐵里面那個(gè)鋼管炼列,現(xiàn)在知道了只搁,叫 pole And the Mou...
    馬文Marvin閱讀 362評論 0 0
  • 直接進(jìn)入正題〖蠹猓…交作業(yè)啦氢惋。?? 這個(gè)第一張…這瓦片被我畫毀掉了洞翩。雜亂無章役纹。都沒對齊腌歉。 講道理,這蠟燭是應(yīng)該被吹歪噠...
    Z_mua閱讀 468評論 2 4