Android軟體包靜默安裝小應用 附原始碼

2021-09-01 06:10:55 字數 1194 閱讀 2976

老早之前,寫了乙個android軟體包靜默安裝的應用,放在工作空間很久了,今天整理專案的時候發現了,拿出來曬曬!

軟體實現的功能:當需要靜默安裝(即不彈出安裝確認對話方塊,後台自動安裝)時,啟動安裝服務,將待安裝的軟體包的路徑放置到intent中,然後啟動安裝服務即可,在軟體成功安裝以後,會傳送廣播,你只需要接受對應的廣播,即可獲知軟體是否安裝成功!

軟體的關鍵**:

class packageinstallobserver extends ipackageinstallobserver.stub   

}

這個類通過名字大概可以看出來,就是乙個觀察者,當安裝成功或者失敗的時候,就會呼叫該類的packageinstalled方法,因此,我們可以將安裝成功或者失敗的響應**寫在這裡,上面的類就是傳送廣播,告訴別人軟體安裝成功。

public void install(string apkpath,string apkname) 

} catch (namenotfoundexception e)

//把包名和apkname對應起來,後面需要使用

map.put(info.packagename, apkname);

ipackageinstallobserver observer = new packageinstallobserver();

pm.installpackage(mpackageuri, observer, installflags, info.packagename);

}}

這個方法就是關鍵的軟體包安裝方法,首先檢查給定的軟體安裝包是否存在,後面的**就是判斷系統當前是否已經安裝了該軟體,如果已經安裝了,則設定安裝引數為替換。

pm.installpackage(mpackageuri, observer, installflags, info.packagename);

這行**呼叫packagemanager的installpackage方法進行軟體包安裝,並註冊乙個觀察者。

另一種方式安裝軟體包,是通過傳送intent請求,讓系統來安裝,所以我們無法控制安裝提示介面。而該方式是自己直接呼叫系統的核心方法,跳過了安裝確認介面,這樣來實現靜默安裝。

分析,因為這個api是系統影藏api,直接呼叫會報錯,因此這個應用需要到原始碼環境下才能編譯成功,關鍵原始碼環境的搭建可以參考部落格:

希望能給需要的人一點幫助~

軟體包安裝

指令碼安裝包,c語言源 開源 編譯時間長。lamp環境搭建 linux apache mysql php 效率高 mnt cdrom packagehttpd 2.2.15 15.el6.centos.1.i686.rpm httpd 軟體名 2.2.15 軟體版本 15 軟體發布次數 el6.ce...

centOS軟體包安裝

之前使用ubuntu,工作需要開始轉向centos,簡單記錄軟體包安裝 centos的軟體安裝大致可以分為兩種型別 centos rpm檔案安裝,使用rpm指令 ubuntu deb檔案安裝,使用dpkg指令 centos yum安裝 ubuntu apt get安裝 rpm指令 一 查詢系統裝已經...

yum安裝軟體包

yum install subversion rpm qa grep subversion subversion 1.6.11 10.el6 5.x86 64 rpm ql subversion 1.6.11 10.el6 5.x86 64 usr share doc subversion 1.6....