android應(yīng)用內(nèi)更新app(解決7.0以上安裝問題)

7.0以上版本要注意:添加以下代碼。還要再M(fèi)anifast中增加Provider赃额,在res目錄下創(chuàng)建xml目錄加派,在xml目錄下創(chuàng)建file_path.xml文件


文件下載后跳轉(zhuǎn)安裝


Manifast配置


file_path.xml

public class UpdateTaskextends AsyncTask?{

private Contextcontext;

? ? private ProgressDialogpd; //進(jìn)度條對話框

? ? public UpdateTask(Context context) {

this.context = context;

? ? }

@Override

? ? protected void onPreExecute() {

pd =new ProgressDialog(context);

? ? ? ? pd.setCanceledOnTouchOutside(false);

? ? ? ? pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

? ? ? ? pd.setMessage("正在下載更新");

? ? ? ? pd.setProgressNumberFormat("%1d kb/%2d kb");//進(jìn)度和總數(shù)

? ? ? ? pd.setCancelable(false);

? ? ? ? pd.show();

? ? ? ? super.onPreExecute();

? ? }

@Override

? ? protected FiledoInBackground(String... params) {

String path = params[0];

? ? ? ? String verNew = params[1];

? ? ? ? HttpURLConnection conn =null;

? ? ? ? File file =null;

? ? ? ? //如果相等的話表示當(dāng)前的sdcard掛載在手機(jī)上并且是可用的

? ? ? ? if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

URL url =null;

? ? ? ? ? ? try {

url =new URL(path);

? ? ? ? ? ? }catch (MalformedURLException e) {

e.printStackTrace();

? ? ? ? ? ? }

try {

if (url.getProtocol().toLowerCase().equals("https")) {

HttpsURLConnection https = (HttpsURLConnection) url.openConnection();

? ? ? ? ? ? ? ? ? ? https.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

? ? ? ? ? ? ? ? ? ? conn = https;

? ? ? ? ? ? ? ? }else {

conn = (HttpURLConnection) url.openConnection();

? ? ? ? ? ? ? ? }

conn.setConnectTimeout(10000);

? ? ? ? ? ? ? ? //獲取到文件的大小

? ? ? ? ? ? ? ? int count = conn.getContentLength();

? ? ? ? ? ? ? ? InputStream is = conn.getInputStream();

? ? ? ? ? ? ? ? file =new File(Environment.getExternalStorageDirectory(), "nodepp." + verNew +".apk");//下載到本地的app名

? ? ? ? ? ? ? ? FileOutputStream fos =new FileOutputStream(file);

? ? ? ? ? ? ? ? BufferedInputStream bis =new BufferedInputStream(is);

? ? ? ? ? ? ? ? byte[] buffer =new byte[1024];

? ? ? ? ? ? ? ? int len;

? ? ? ? ? ? ? ? int total =0;

? ? ? ? ? ? ? ? while ((len = bis.read(buffer)) != -1) {

fos.write(buffer, 0, len);

? ? ? ? ? ? ? ? ? ? total += len;

? ? ? ? ? ? ? ? ? ? //獲取當(dāng)前下載量

? ? ? ? ? ? ? ? ? ? publishProgress(total, count);

? ? ? ? ? ? ? ? }

fos.close();

? ? ? ? ? ? ? ? bis.close();

? ? ? ? ? ? ? ? is.close();

? ? ? ? ? ? ? ? return file;

? ? ? ? ? ? }catch (Exception e) {

e.printStackTrace();

? ? ? ? ? ? }finally {

}

}else {

return null;

? ? ? ? }

return file;

? ? }

@Override

? ? protected void onProgressUpdate(Integer... values) {

pd.setProgress(values[0] /1024);

? ? ? ? pd.setMax(values[1] /1024);

? ? ? ? super.onProgressUpdate(values);

? ? }

@Override

? ? protected void onPostExecute(File file) {

if (file !=null) {

//安裝apk

? ? ? ? ? ? Intent intent =new Intent();

? ? ? ? ? ? //執(zhí)行動(dòng)作

? ? ? ? ? ? intent.setAction(Intent.ACTION_VIEW);

? ? ? ? ? ? intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

? ? ? ? ? ? if(Build.VERSION.SDK_INT>=24) {//判讀版本是否在7.0以上

? ? ? ? ? ? ? ? //7.0以上需要通過FileProvider獲取uri

? ? ? ? ? ? ? ? Uri apkUri = FileProvider.getUriForFile(context, "com.nodepp.smartnode.fileprovider", file);

? ? ? ? ? ? ? ? intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加這一句表示對目標(biāo)應(yīng)用臨時(shí)授權(quán)該Uri所代表的文件

? ? ? ? ? ? ? ? intent.setDataAndType(apkUri, "application/vnd.android.package-archive");

? ? ? ? ? ? }else {

//執(zhí)行的數(shù)據(jù)類型,此處Android應(yīng)為android跳芳,否則造成安裝不了

? ? ? ? ? ? ? ? intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");

? ? ? ? ? ? }

context.startActivity(intent);

? ? ? ? ? ? pd.dismiss();

? ? ? ? ? ? ((Activity)context).finish();

? ? ? ? }else {

pd.dismiss();

? ? ? ? ? ? // 下載app失敗

? ? ? ? ? ? AlertDialog dialog =new AlertDialog.Builder(context).setTitle("提示")

.setMessage("應(yīng)用下載失敗")

.setCancelable(false)

.setPositiveButton("確定",

? ? ? ? ? ? ? ? ? ? ? ? ? ? new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int which) {

dialog.dismiss();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

}).create();

? ? ? ? ? ? dialog.show();

? ? ? ? }

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哼丈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子筛严,更是在濱河造成了極大的恐慌醉旦,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桨啃,死亡現(xiàn)場離奇詭異车胡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)照瘾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門匈棘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人析命,你說我怎么就攤上這事主卫√幽” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵簇搅,是天一觀的道長完域。 經(jīng)常有香客問我,道長瘩将,這世上最難降的妖魔是什么吟税? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮姿现,結(jié)果婚禮上肠仪,老公的妹妹穿的比我還像新娘。我一直安慰自己备典,他們只是感情好异旧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著提佣,像睡著了一般吮蛹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上镐依,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天匹涮,我揣著相機(jī)與錄音天试,去河邊找鬼槐壳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛喜每,可吹牛的內(nèi)容都是我干的务唐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼带兜,長吁一口氣:“原來是場噩夢啊……” “哼枫笛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刚照,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤刑巧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后无畔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啊楚,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年浑彰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恭理。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡郭变,死狀恐怖颜价,靈堂內(nèi)的尸體忽然破棺而出涯保,到底是詐尸還是另有隱情,我是刑警寧澤周伦,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布夕春,位于F島的核電站,受9級特大地震影響横辆,放射性物質(zhì)發(fā)生泄漏撇他。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一狈蚤、第九天 我趴在偏房一處隱蔽的房頂上張望困肩。 院中可真熱鬧,春花似錦脆侮、人聲如沸锌畸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽潭枣。三九已至,卻和暖如春幻捏,著一層夾襖步出監(jiān)牢的瞬間盆犁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工篡九, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谐岁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓榛臼,卻偏偏與公主長得像伊佃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子沛善,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

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