Android 8.0 內(nèi)部更新適配

Android8.0后需要使應(yīng)用可以安裝未知來源應(yīng)用才可以安裝更新包荆几,做內(nèi)部更新
設(shè)置res->xml->file_path.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path path="Android/data/此處填寫applicationId(即包名)/"        name="files_root" />
    <external-path path="." name="external_storage_root" />
</paths>

AndroidManifest文件配置

<application>
    <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="此處填寫applicationId(即包名).fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">

            <!-- 元數(shù)據(jù) -->
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
    </provider>
</application>

新建工具類

public class InstallAppUtils {

    public static void installApp(Context context , File updateFile) {
        // 核心是下面幾句代碼
        if (null != updateFile) {
            try {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                //兼容7.0
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    Uri contentUri = FileProvider.getUriForFile(context, "此處填寫applicationId(即包名).fileprovider", updateFile);
                    intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
                    //兼容8.0
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                        boolean hasInstallPermission = mActivity.getPackageManager().canRequestPackageInstalls();
                        if (!hasInstallPermission) {
                            ToastUtil.showLong("請(qǐng)?jiān)谠O(shè)置界面設(shè)置本應(yīng)用允許安裝應(yīng)用");
                            startInstallPermissionSettingActivity(context);
                            return;
                        }
                    }
                } else {
                    intent.setDataAndType(Uri.fromFile(updateFile), "application/vnd.android.package-archive");
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                }
                if (mActivity.getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
                    mActivity.startActivity(intent);
                }
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 跳轉(zhuǎn)到設(shè)置-允許安裝未知來源-頁面
     */
    @RequiresApi(api = Build.VERSION_CODES.O)
    private static void startInstallPermissionSettingActivity(Context context) {
        //注意這個(gè)是8.0新API
        Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mActivity.startActivity(intent);
    }
}

調(diào)用

    InstallAppUtils.installApp(context, updateApk)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市砾隅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌债蜜,老刑警劉巖晴埂,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件究反,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡儒洛,警方通過查閱死者的電腦和手機(jī)精耐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琅锻,“玉大人卦停,你說我怎么就攤上這事∧张睿” “怎么了惊完?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)处硬。 經(jīng)常有香客問我小槐,道長(zhǎng),這世上最難降的妖魔是什么荷辕? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任凿跳,我火速辦了婚禮,結(jié)果婚禮上桐腌,老公的妹妹穿的比我還像新娘拄显。我一直安慰自己,他們只是感情好案站,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布躬审。 她就那樣靜靜地躺著,像睡著了一般蟆盐。 火紅的嫁衣襯著肌膚如雪承边。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天石挂,我揣著相機(jī)與錄音博助,去河邊找鬼。 笑死痹愚,一個(gè)胖子當(dāng)著我的面吹牛富岳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拯腮,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窖式,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了动壤?” 一聲冷哼從身側(cè)響起萝喘,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后阁簸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爬早,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年启妹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筛严。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翅溺,死狀恐怖脑漫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咙崎,我是刑警寧澤优幸,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站褪猛,受9級(jí)特大地震影響网杆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伊滋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一碳却、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笑旺,春花似錦昼浦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乌妙,卻和暖如春斋配,著一層夾襖步出監(jiān)牢的瞬間奠蹬,已是汗流浹背壶笼。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工杨名, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泽艘。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓欲险,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親匹涮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盯荤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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