日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发之下载Apk安装的方法兼容Android7.0和8.0及以上

發布時間:2023/12/15 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之下载Apk安装的方法兼容Android7.0和8.0及以上 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

具體查看代碼:

首先在清單文件配置三個權限讀寫權限和請求安裝權限(兼容Android8.0手機)如下:

<!--安裝apk權限--><uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /><!-- 在SDCard中創建與刪除文件權限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><!-- 往SDCard 讀寫入數據權限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

兼容Android7.0?FileProvider

<providerandroid:name="android.support.v4.content.FileProvider"android:authorities="${applicationId}.provider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_paths" /></provider>

記得在res下面配置xml文件夾:如下:

下面是provider_paths.xml的文件內容

<?xml version="1.0" encoding="utf-8"?> <paths><external-pathname="external_files"path="." /> </paths>

然后上下載和安裝的代碼:

/*** 下載apk的方法** @param activity 上下文*/public void downloadApk(final Activity activity) {HttpUtils httpUtils = new HttpUtils();// 判斷sd卡是否掛載if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {final String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/jfsj.apk"; // httpUtils.download("http://cdn1.down.apk.gfan.net.cn/Pfiles/2020/05/21/gfanxapp_20200521194529_45df3390-b57e-4c16-b0fb-fb0ebcac1a80.apk", "/mnt/sdcard/mobilesafe72_2.apk",httpUtils.download("https://imtt.dd.qq.com/16891/apk/53F52C519A0CDEF8A6BA6579A7BD20F2.apk?fsname=com.wifi.key_5.8.9_589.apk&csr=1bbd", filePath,new RequestCallBack<File>() {// 下載成功的時候調用@Overridepublic void onSuccess(ResponseInfo<File> arg0) {CommonLoading.getInstance().closeDialog();Toast.makeText(activity.getApplicationContext(), "下載成功", Toast.LENGTH_SHORT).show();// 安裝最新版本install(filePath, activity);}// 下載失敗的時候調用@Overridepublic void onFailure(HttpException arg0, String arg1) {Log.e("下載失敗", "失敗了:" + arg0.getLocalizedMessage());Toast.makeText(activity.getApplicationContext(), "下載失敗了," + arg0.getLocalizedMessage(), Toast.LENGTH_LONG).show();}@Overridepublic void onLoading(long total, long current, boolean isUploading) {super.onLoading(total, current, isUploading);long progress = (current / total) * 100;Log.e("下載進度", current + "/" + total + ":進度" + progress + "%");}});}}/*** 安裝最新版本** @param filePath 安裝包的路徑*/private void install(String filePath, Activity activity) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");Uri fileURI;File file = new File(filePath);if (Build.VERSION.SDK_INT >= 24) {fileURI = FileProvider.getUriForFile(activity, activity.getApplicationContext().getPackageName() + ".provider", file);} else {//android70.以下手機fileURI = Uri.fromFile(file);}//Android7.0以上必須添加如下代碼activity.grantUriPermission(activity.getPackageName(), fileURI, Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);intent.setDataAndType(fileURI, "application/vnd.android.package-archive");// 當當前的activity退出的時候,會調用之前activity的onActivityResult方法activity.startActivityForResult(intent, 0);}

使用方法:調用downloadApk這個方法即可。

?

注意記得添加動態權限否則報錯,還有就是如果使用android9.0以上手機并且你的網址是http的非https,記得在清單文件添加如下:否則可能會無法下載apk

android:usesCleartextTraffic="true"

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Android开发之下载Apk安装的方法兼容Android7.0和8.0及以上的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。