Android 中實(shí)現(xiàn)點(diǎn)擊下載跳轉(zhuǎn)其他APK功能

開(kāi)發(fā)過(guò)程中肯定會(huì)遇到這樣的一個(gè)功能:點(diǎn)擊圖標(biāo)下載apk市袖,安裝后實(shí)現(xiàn)功能跳轉(zhuǎn),現(xiàn)簡(jiǎn)單記錄一下烁涌,以防以后用上苍碟。

1、先判斷當(dāng)前手機(jī)或者平板有沒(méi)有安裝該apk

    /**
     * 判斷有沒(méi)有安裝該apk
     * @param packageName
     * @param context
     * @return
     */
    public static boolean isAvilible(String packageName,Context context) {
        final PackageManager packageManager = context.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;
    }

2撮执、復(fù)制assert目錄下的apk到sd卡中(該方式實(shí)現(xiàn)的是:要下載的apk先放到assert目錄下)

/**
     * 復(fù)制assert目錄下的apk到sd卡中
     * @param context
     * @param apkName
     * @return
     */
    public static boolean copyApkFromAssets(Context context,String apkName) {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+apkName;
        boolean copyIsFinish = false;
        try {
            InputStream is = context.getAssets().open(apkName);
            File file = new File(path);
            file.createNewFile();
            FileOutputStream fos = new FileOutputStream(file);
            byte[] temp = new byte[1024];
            int i = 0;
            while ((i = is.read(temp)) > 0) {
                fos.write(temp, 0, i);
            }
            fos.close();
            is.close();
            copyIsFinish = true;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return copyIsFinish;
    }

3微峰、提示用戶是否要安裝

 /**
     * 彈窗提示用戶安裝與否
     * @param apkName
     */
    private void showInstallApkOrNo(final String apkName){
        if (AppUtils.copyApkFromAssets(getActivity(), apkName)) {
            Dialog builder = new AlertDialog.Builder(getActivity())
                    .setIcon(R.drawable.ic_launcher)
                    .setMessage("是否安裝?")
                    .setNegativeButton("取消", null)
                    .setPositiveButton("確定", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Intent intent = new Intent(Intent.ACTION_VIEW);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+apkName), "application/vnd.android.package-archive");
                            getActivity().startActivity(intent);
                        }
                    })
                    .create();
            builder.show();
        }
    }

4抒钱、實(shí)現(xiàn)功能跳轉(zhuǎn)

private void jumpToIntegrationFunction(int position){
        String apkName = "app-release.apk";
        String packageName = "com.tecsun.tsb.integration.hubei";
        String srcActivity = "com.tecsun.tsb.integration.hubei.activity.MainActivity";
        
        if ( !AppUtils.isAvilible( packageName , getActivity( ) ) ){
//          LogUtils.v( "com.tecsun.tsb.integration.hubei not installed" );
//          return;
            showInstallApkOrNo(apkName);
            return;
        }
        
        int type = -1;
        if ( position == 0 ) {
            type = TQ_APPLY;
        }
        if ( position == 11 ) {     
            type = TQ_INTRODUCE;
        }
        if ( type > 0 ) {
            Intent intent = new Intent( );
            srcActivity = packageName + ".activity.MainActivity";
            ComponentName componentName = new ComponentName( packageName ,
                    srcActivity );
            intent.setComponent( componentName );
            intent.putExtra( "type" , type );
            intent.putExtra( "TOKEN_ID" , AppApplication.TOKEN_ID );
            intent.setAction( srcActivity );
            getActivity( ).startActivity( intent );
            return;
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜓肆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谋币,更是在濱河造成了極大的恐慌仗扬,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕾额,死亡現(xiàn)場(chǎng)離奇詭異早芭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)诅蝶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)退个,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人调炬,你說(shuō)我怎么就攤上這事语盈。” “怎么了缰泡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵刀荒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我匀谣,道長(zhǎng)照棋,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任武翎,我火速辦了婚禮,結(jié)果婚禮上溶锭,老公的妹妹穿的比我還像新娘宝恶。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布垫毙。 她就那樣靜靜地躺著霹疫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪综芥。 梳的紋絲不亂的頭發(fā)上丽蝎,一...
    開(kāi)封第一講書(shū)人閱讀 51,245評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音膀藐,去河邊找鬼屠阻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛额各,可吹牛的內(nèi)容都是我干的国觉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼虾啦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼麻诀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起傲醉,我...
    開(kāi)封第一講書(shū)人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蝇闭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后硬毕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呻引,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年昭殉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苞七。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挪丢,死狀恐怖蹂风,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乾蓬,我是刑警寧澤惠啄,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站任内,受9級(jí)特大地震影響撵渡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜死嗦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一趋距、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧越除,春花似錦节腐、人聲如沸外盯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)饱苟。三九已至,卻和暖如春狼渊,著一層夾襖步出監(jiān)牢的瞬間箱熬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工狈邑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留城须,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓官地,卻偏偏與公主長(zhǎng)得像酿傍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驱入,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

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