應用黑名單以及靜默安裝的實現
需求描述:
1.主要給上層應用提供一個新增應用黑名單介面,被新增到黑名單的應用使用者無法對其進行安裝。同時也可以對這個黑名單進行增加和刪除
2.給上層應用提供一個靜默安裝解除安裝的介面,應用呼叫這個介面可以實現應用的靜默安裝和解除安裝。
具體實現:
一.應用黑名單新增:
1.在PackageManagerService中建立一個資料庫用來儲存這些應用的包名,同時實現對於此資料庫的增刪改查。
2.在handleStartCopy()函式中去讀取資料庫遍歷和安裝的包名進行對比,如果存在於黑名單就不進行安裝同時返回不安裝的資訊。
程式碼:
List packageName = new ArrayList();
packageName = getAppRestriction();
if(packageName != null) {
for(String pakgs : packageName) {
if(pkgLite.packageName.equals(pakgs)) {
ret = PackageManager.INSTALL_FAILED_INVALID_URI;
break;
} else {
ret = PackageManager.INSTALL_SUCCEEDED;
}
}
} else {
ret = PackageManager.INSTALL_SUCCEEDED;
}
二.靜默安裝的實現:
1.通過解析pm命令的方式進行靜默安裝,因為考慮到重複安裝的情況,所以使用pm install -r命令。
2.但是在手機沒有root的情況下,pm命令是安裝不成功的,原因在於PackageManagerService的installPackageAsUser()函式有一個許可權的檢查,
所以在這裡新增包名判斷來確定進不進行許可權檢查。
程式碼:
final int callingUid = Binder.getCallingUid();
if(getNameForUid(callingUid) != null) {
if(!getNameForUid(callingUid).equals(“com.example.requiredemo”)) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
}
} else
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
相關文章
- 【11g 單庫解除安裝、靜默安裝】實驗
- rac靜默安裝
- Oracle靜默安裝Oracle
- Android 流氓軟體靜默安裝是怎麼實現的?Android
- Linux下靜默安裝OraceLinux
- 【靜默】在RHEL 6.5上靜默安裝Oracle 18cOracle
- 靜默安裝and手動建庫
- oracle 19C 靜默安裝Oracle
- 靜默安裝oracle時報錯Oracle
- AnolisOS 7.9 靜默安裝Oacle 11.2.0.4
- centos 7.4靜默安裝oracle 19.3CentOSOracle
- 19c(19.3) 單機資料庫靜默安裝資料庫
- Windows 7平臺靜默安裝11.2.0.4軟體及靜默建庫Windows
- 靜默方式安裝11gR2
- Oracle Linux 7.1 靜默安裝Weblogic 12.2.1.3OracleLinuxWeb
- 靜默安裝19C RAC的指令碼指令碼
- win10如何禁止靜默執行_win10禁止靜默安裝方法Win10
- RedHat上靜默安裝Oracle11gRedhatOracle
- CentOS 7.2靜默安裝Oracle11gCentOSOracle
- redhat7.2靜默安裝Oracle11.2.0.4RedhatOracle
- CentOS 7.5靜默安裝Oracle 11gCentOSOracle
- 靜默方式安裝、升級oracle(一): 安裝oracle軟體Oracle
- alertmanager實現告警抑制及靜默
- windows10系統禁止靜默安裝的方法Windows
- Oracle 19C的下載和安裝部署(圖形安裝和靜默安裝)Oracle
- 靜默安裝Oracle11g資料庫Oracle資料庫
- 靜默方式安裝oracle 11g 完整攻略Oracle
- oracle11g客戶端靜默安裝Oracle客戶端
- 靜默安裝Oracle資料庫11gOracle資料庫
- RedHat 7 靜默安裝Oracle11g的補充RedhatOracle
- linux7 靜默安裝 11GR2 RACLinux
- Oracle Linux 7.1 靜默安裝Oracle 18c RACOracleLinux
- Linux下利用指令碼靜默安裝Oracle11GLinux指令碼Oracle
- 靜默方式安裝、升級oracle(二): 建立資料庫Oracle資料庫
- GoldenGate 12.3 MA架構介紹系列(5) - 靜默安裝Go架構
- oracle11g在linux7的靜默安裝指令碼OracleLinux指令碼
- 【配置安裝】靜默安裝Oracle資料庫軟體12c&19cOracle資料庫
- 突破技術限制,實現Web端靜默列印Web