Android 跳轉(zhuǎn)到第三方應(yīng)用(應(yīng)用間的跳轉(zhuǎn))

文章部分內(nèi)容轉(zhuǎn)載于:https://blog.csdn.net/qq_40967402/article/details/82598465

博客原文內(nèi)容


在開發(fā)的過程中 有時(shí)候可能會(huì)需要進(jìn)行應(yīng)用之間的跳轉(zhuǎn) 而跳轉(zhuǎn)又分為顯式意圖和隱式意圖
首先說一下顯示意圖和隱式意圖的區(qū)別
  • 顯式意圖:
    明確指定組件名的Intent為顯示意圖盏筐,明確了Intent應(yīng)該傳遞給那個(gè)組件簿透。
  • 隱式意圖:
    沒有明確指定組件名的Intent為隱式意圖。

顯示意圖多用于應(yīng)用內(nèi)到跳轉(zhuǎn) 也就是我們平時(shí)用的跳轉(zhuǎn)方式 而隱式意圖多用于多用于應(yīng)用間的跳轉(zhuǎn)*
因?yàn)轱@示意圖需要明確知道報(bào)名和類名才能進(jìn)行跳轉(zhuǎn) 而跳轉(zhuǎn)其他第三方應(yīng)用 很有可能不知道他的包名和類名 除非是合作應(yīng)用或者進(jìn)行了反編譯

假如 在知道包名類名的情況下 需要跳轉(zhuǎn)到第三方的應(yīng)用 就可以使用顯示意圖跳轉(zhuǎn) 下面是例子
假如我們要跳轉(zhuǎn)到瀏覽器搜索頁面 瀏覽器的包名是 com.android.browser
搜索頁面的類名為com.android.browser.BrowserActivity
那么有兩種方法可以實(shí)現(xiàn)

第一種:
           button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
                startActivity(intent);
                 }
        });

第二種:
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                ComponentName componentName=new ComponentName("com.android.browser", "com.android.browser.BrowserActivity");
                intent.setComponent(componentName);
                startActivity(intent);
            }
        });

如果在不知道指定的Activity界面類名的情況下就需要跳轉(zhuǎn)到指定的界面 這里需要隱式調(diào)用 依然是使用上面的包名
可以這樣寫
通過action和category來進(jìn)行跳轉(zhuǎn)指定的界面(這兩個(gè)參數(shù)在應(yīng)用API文檔里面有標(biāo)注 或者 可以直接網(wǎng)上找)

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("android.intent.action.SEARCH");
                intent.addCategory("android.intent.category.DEFAULT");
                intent.setPackage("com.android.browser");
            }
        });

還有一種情況就是不需要跳轉(zhuǎn)到指定的界面 只需要打開應(yīng)用 而且 只知道包名 怎么辦 別慌 這樣來:

      button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.browser");
                startActivity(intent);
            }
        });

這里需要說明一下Intent的setClass和setClassName的區(qū)別
setClass:跳轉(zhuǎn)到與該工程下的(同一個(gè)Application中的)activity或者service
setClassName:跳轉(zhuǎn)到不同Applicaiton的activity或者service


判斷手機(jī)上有沒有第三方應(yīng)用

 /**
     * 檢測
     *
     */
    public static void checkIsInstall(Context ctx, String packageName) {

        if ( !isAvilible( packageName , ctx ) ){
             //沒有安裝Apk
        }else {

            //已經(jīng)安裝了Apk
            Intent intent = new Intent();
            intent.setClassName(packageName, srcActivity);
            ctx.startActivity(intent);
        }


    }


    /**
     * 檢查是否安裝了某應(yīng)用
     *
     * @param packageName 包名
     * @return
     */
    public static boolean isAvilible(String packageName, Context mContext) {
        final PackageManager packageManager = mContext.getPackageManager();
        // 獲取所有已安裝程序的包信息
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
        for (int i = 0; i < pinfo.size(); i++) {
            if (pinfo.get(i).packageName.equalsIgnoreCase(packageName))
                return true;
        }
        return false;
    }

注意點(diǎn)

如果加了上面的內(nèi)容捌治,在 實(shí)現(xiàn)的過程中出現(xiàn)了如下的錯(cuò)誤:

Caused by: java.lang.SecurityException: Permission Denial: starting Intent { cmp=tecsun.jx.yt.phone/.MainActivity } from ProcessRecord{44299e68 11892:com.example.administrator.linkyingtandemo/u0a85} (pid=11892, uid=10085) not exported from uid 10482

這個(gè)應(yīng)該就是第三方的應(yīng)用沒有加許可跳轉(zhuǎn):android:exported="true"

        <activity
            android:exported="true"
            android:name="xxxxxxx.xxxx.xxx.xxx.MainActivity"
            android:configChanges="keyboardHidden|orientation"
            android:launchMode="singleTask"
            android:screenOrientation="portrait" />
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末线椰,一起剝皮案震驚了整個(gè)濱河市胞谈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌憨愉,老刑警劉巖烦绳,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異配紫,居然都是意外死亡径密,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門躺孝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來享扔,“玉大人,你說我怎么就攤上這事植袍【迕撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵于个,是天一觀的道長氛魁。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么秀存? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任捶码,我火速辦了婚禮,結(jié)果婚禮上或链,老公的妹妹穿的比我還像新娘宙项。我一直安慰自己,他們只是感情好株扛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布尤筐。 她就那樣靜靜地躺著,像睡著了一般洞就。 火紅的嫁衣襯著肌膚如雪盆繁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天旬蟋,我揣著相機(jī)與錄音油昂,去河邊找鬼。 笑死倾贰,一個(gè)胖子當(dāng)著我的面吹牛冕碟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匆浙,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼安寺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了首尼?” 一聲冷哼從身側(cè)響起挑庶,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎软能,沒想到半個(gè)月后迎捺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡查排,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年凳枝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跋核。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岖瑰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出了罪,到底是詐尸還是另有隱情锭环,我是刑警寧澤聪全,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布泊藕,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏娃圆。R本人自食惡果不足惜玫锋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讼呢。 院中可真熱鬧撩鹿,春花似錦、人聲如沸悦屏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽础爬。三九已至甫贯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間看蚜,已是汗流浹背叫搁。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留供炎,地道東北人渴逻。 一個(gè)月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像音诫,于是被迫代替她去往敵國和親惨奕。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

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

  • 一竭钝、知識(shí)點(diǎn)回顧:Activity (一)墓贿、如何實(shí)現(xiàn)Activity頁面跳轉(zhuǎn)? 示例代碼: //第一種方式: Int...
    白話徐文濤閱讀 2,015評論 0 15
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,193評論 25 707
  • 你從一座叫我的小鎮(zhèn)經(jīng)過 剛好屋頂?shù)难┗捎觑h落 你穿著透明的衣服 給我一個(gè)人唱歌 全都是我喜歡的歌 譚維維的《如果...
    凱凱1219閱讀 211評論 0 0
  • 婚前看情感蜓氨,婚后靠相處聋袋。 人人皆平等,人人都擁有幸福的權(quán)力穴吹。 1幽勒。唯有愛和夢想不可辜負(fù)你想要的生活都會(huì)給你,卻也要...
    聚字成書閱讀 247評論 0 1
  • 2017漸行漸遠(yuǎn)港令,數(shù)得到的日子啥容,握不住的光陰。 年末顷霹,領(lǐng)導(dǎo)回給你談話咪惠,是不能缺少的功課。今天剛好我上班淋淀,領(lǐng)導(dǎo)說下班...
    逆水而流閱讀 225評論 0 0