Android中下載、安裝和卸載(原)

應用場景:在檢查版本更新的時候經常需要從服務器端下載然后安裝到手機中

使用工具: XUtils,這個開源的框架真的是需要花大把時間去閱讀和理解的,十分有用的,on the way ! fighting!

下載:github中關鍵字搜索即可download

 

 1 //google提供的保留地址,不會隨著電腦ip地址的變化而改變測試ip地址
 2 private static final String mDownloadUrl= "http://10.0.2.2:8080/xxx.apk";
 3 
 4 protected void downloadApk() {
 5 
 6         if (Environment.getExternalStorageState().equals(
 7                 Environment.MEDIA_MOUNTED)) {
 8         //下載apk到sd的路徑
 9             String sdPath = Environment.getExternalStorageDirectory()
10                     .getAbsolutePath() + File.separator + "xxx.apk";
11             HttpUtils httpUtils = new HttpUtils();
12 
13             httpUtils.download(mDownloadUrl, sdPath,
14                     new RequestCallBack<File>() {
15 
16                         @Override
17                         public void onStart() {
18                             Log.i(tag, "開始下載");
19                             super.onStart();
20                         }
21 
22                         @Override
23                         public void onLoading(long total, long current,
24                                 boolean isUploading) {
25                             Log.i(tag, "正在下載中");
26                             Log.i(tag, "total = " + total);
27                             Log.i(tag, "current = " + current);
28                             super.onLoading(total, current, isUploading);
29                         }
30 
31                         @Override
32                         public void onSuccess(ResponseInfo<File> responseInfo) {
33                             Log.i(tag, "下載完成");
34                             //獲取下載好的文件路徑
35                             File file = responseInfo.result;
36                 //安裝apk
37                             installApk(file);
38 
39                         }  
40 
41                         @Override
42                         public void onFailure(HttpException error, String msg) {
43                             Log.i(tag, "下載失敗");
44                         }
45 
46                     });
47         }
48     }
View Code

?

通過隱式意圖去實現下載

  通過查詢源碼把下面代碼摳出來

?

/** <intent-filter> <action android:name="android.intent.action.VIEW" />* <category android:name="android.intent.category.DEFAULT" /> 
* <data android:scheme="content" /> <data android:scheme="file" />
* <data android:mimeType="application/vnd.android.package-archive" />* </intent-filter>*/

?

 然后就是一個簡單的隱式意圖開啟Activity的過程

?

protected void installApk(File file) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");/** intent.setData(Uri.fromFile(file));* intent.setType("application/vnd.android.package-archive");*/
          //與被注釋代碼等價,但推薦使用下述方法,被注釋方法存在一個finish問題intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");startActivity(intent);}

?

 //卸載應用的方法同上,找到對應的源碼,查看安卓系統是怎么實現的

?

?

<intent-filter><action android:name="android.intent.action.VIEW" /><action android:name="android.intent.action.DELETE" /><category android:name="android.intent.category.DEFAULT" /><data android:scheme="package" />
</intent-filter>

//同上,開啟意圖即可

protected void uninstall(){	Intent intent = new Intent();intent.setAction(Intent.ACTION_DELETE);
     intent.addCategory("android.intent.category.DEFAULT");intent.setData(Uri.parse("package:"+包名));startActivity(intent); }

  

?

轉載于:https://www.cnblogs.com/adv-qbj/p/4715274.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/459069.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/459069.shtml
英文地址,請注明出處:http://en.pswp.cn/news/459069.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android加載圖片OOM錯誤解決方式

前幾天做項目的時候&#xff0c;甲方要求是PAD &#xff08;SAMSUNG P600 10.1寸 2560*1600&#xff09;的PAD上顯示高分辨率的大圖片。 SQLITE採用BOLD方式存儲圖片&#xff0c;這個存取過程就不說了哈&#xff0c;網上一大堆。 可是在加載/讀取/顯示圖片的時候會報OOM錯誤&am…

C# 對Ini文件操作(C# ini文件操作類)

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** /* C# 對Ini文件操作&#xff08;C# ini文件操作類&#xff09; [IniFiles.cs] 蝶曉…

python對文件進行讀寫操作

2019獨角獸企業重金招聘Python工程師標準>>> python進行文件讀寫的函數是open或file file_handler open(filename,,mode&#xff09; Table mode 模式描述r以讀方式打開文件&#xff0c;可讀取文件信息。w以寫方式打開文件&#xff0c;可向文件寫入信息。如文件存在…

android:contentDescription

android:contentDescription這個屬性相信大家并不陌生&#xff0c;在ImageButton的使用過程中如果不添加這個屬性會有警告信息。 那么android:contentDescription究竟是干什么的呢&#xff1f;今天查了下資料才知道這個屬性的真正作用。 該屬性為視力障礙的用戶提供方便&#x…

c#中bin,obj,properties文件夾的作用

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** Bin目錄用來存放編譯的結果&#xff0c;bin是二進制binrary的英文縮寫&#xff0c;因為…

getAttribute實例例java_Java ExifInterface.getAttribute方法代碼示例

import android.media.ExifInterface; //導入方法依賴的package包/類public static void copyExif(ExifInterface originalExif, int width, int height, String imageOutputPath) {String[] attributes new String[]{ExifInterface.TAG_APERTURE,ExifInterface.TAG_DATETIME,…

檢測SDWebImage有沒有緩存圖片 IOS 獲取網絡圖片大小

判斷圖片是否緩存NSURL *url [NSURL URLWithString:[model.content objectForKey:"image"]];//請求網絡地址數據的同步方法//因為這個方法在子線程(全局隊列)中執行,所以不需要考慮死線程的問題SDWebImageManager *manager [SDWebImageManager sharedManager];[man…

mac 下 使用 java運行 class 文件 總是提示 “錯誤: 找不到或無法加載主類”的解決方法...

發現問題 切換到mac平臺后&#xff0c;突然想寫點程序運行在mac下&#xff0c;想到mac自帶java&#xff0c;會方便好多。不過在這過程中遇到了麻煩&#xff1a; 總是提示 “錯誤: 找不到或無法加載主類” 工程結構 查了好久&#xff0c;終于找到原型所在&#xff0c;發現網上很…

[轉]VisualStudio如何組織解決方案的目錄結構

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 解決方案與項目&#xff1a; 從VC6之后VC系列就使用解決方案&#xff08;Solution&…

java幾種刪除_幾種刪除Linux目錄的方法

在Linux中有很多方法可以刪除目錄&#xff0c;在圖形化界面可以利用文件管理器&#xff0c;或者通過終端刪除。本文將介紹在文本界面使用命令刪除目錄。使用rmdir刪除目錄Rmdir命令間成“remove directory”&#xff0c;用于刪除空目錄的命令。例如&#xff0c;刪除一個名為“M…

php公鑰模數,php – 如何從公共指數和RSA模數生成DER / PEM證書?

眾所周知,公鑰由公共指數和模數組成.我的問題是&#xff1a;如何從公共指數和RSA模數生成DER / PEM證書&#xff1f;非常感謝你提前.解決方法:使用公共指數和模數,你可能希望做的最好的事情是得到這樣的東西&#xff1a;-----BEGIN PUBLIC KEY-----MIGGAoGAfHlcdrcuOK6C02rbGR3…

C# DataTable的詳細用法

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** DataTable 是一個臨時保存數據的網格虛擬表(表示內存中數據的一個表。)。DataTable是A…

【SpringMVC】SpringMVC系列6之@CookieValue 映射請求Cookie 值

6、CookieValue 映射請求Cookie 值 6.1、示例 CookieValue 可讓處理方法入參綁定某個 Cookie 值&#xff0c;示例如下&#xff1a;

杭電OJ-2104_hide handkerchief超簡潔代碼

#include<iostream> using namespace std; int n, m;; int zz(int a, int b) {return b0 ? a: zz(b, a%b); } int main() {while (cin >> n >> m&&n ! -1 && m ! -1)cout << (nb(n, m) 1 ? "YES" : "POOR Haha"…

php 年月日 中文,轉換中文日期的PHP程序

轉換中文日期的PHP程序本程序將中文日期輸出為2001-12-23&#xff0c;并很好解決了“十”的問題&#xff0c;如“十一”和“二十一”中“十”的處理&#xff01;稍加修改可改為函數。跟隨小編去看看吧&#xff01;希望對大家有所幫助&#xff01;$str"二零○一年十二月二十…

c# Invoke和BeginInvoke

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 轉自&#xff1a;http://blog.3snews.net/html/30/34530-27563.html在多線程編程中&am…

Oracle手邊常用70則腳本知識匯總

Oracle手邊常用70則腳本知識匯總 作者&#xff1a;白寧超 時間&#xff1a;2016年3月4日13:58:36 摘要: 日常使用oracle數據庫過程中&#xff0c;常用腳本命令莫不是用戶和密碼、表空間、多表聯合、執行語句等常規操作。另外表的導入導出也很常用&#xff0c;這些腳步命令之前都…

php常見的面試題目

一. 基本知識點1.1 HTTP協議中幾個狀態碼的含義:503 500 401 403 404 200 301 302。。。200 : 請求成功&#xff0c;請求的數據隨之返回。301 : 永久性重定向。302 : 暫時行重定向。401 : 當前請求需要用戶驗證。403 : 服務器拒絕執行請求&#xff0c;即沒有權限。404 : 請求失…

php表示私有變量的是,PHP 訪問私有和受保護的成員變量

示例反射通常用作軟件測試的一部分&#xff0c;例如在運行時創建/實例化模擬對象。這對于在任何給定時間點檢查對象的狀態也非常有用。這是在單元測試中使用Reflection來驗證受保護的類成員是否包含期望值的示例。下面是一個非常基礎的汽車課。它具有受保護的成員變量&#xff…

BZOJ2683 簡單題(CDQ分治)

傳送門 之前聽別人說CDQ分治不難學&#xff0c;今天才知道果真如此。之前一直為自己想不到CDQ的方法二很不爽&#xff0c;今天終于是想出來了一道了&#xff0c;太弱…… cdq分治主要就是把整段區間分成兩半&#xff0c;然后用左區間的值去更新右區間的答案&#xff0c;每次把…