當前位置:首頁 » 安卓系統 » android代碼卸載應用

android代碼卸載應用

發布時間: 2025-06-18 05:57:21

⑴ android 開發怎樣卸載系統應用

具體步驟如下:

首先要用數據線連接計算機和android設備

1.在計算機開發doc界面,輸入adb shell 進入手機的shell交互的終端界面,如下圖。

3.上面圖片紅框內的ro,rw就是系統應用的許可權。ro就是當前system是只讀許可權,rw是當前system是可讀可寫許可權。所以只要更改許可權即可。

4.更改許可權,命令如下:mount -oremount,rw/dev/block/mtdblock3/system(吧把ro的許可權修改成rw,rw的表示可以刪除)

輸入就可以直接進入/system/app下去刪應用了!刪除命令是rm指令。

⑵ android N 內置可卸載app

方法一

直接使用Intent卸載

Uri uri = Uri.fromParts("package", "com.example.demo", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
startActivity(intent);123

這是最簡單的方式,調用卸載方法系統會彈出卸載APP對話框,點擊確定就會立即卸載,不需要額外許可權

方法二

使用PackageManager靜默卸載

谷歌認為該方法是不安全的行為,因此該介面是@hide的,不是公開的介面,調用此介面需要有系統簽名和相應的系統級許可權

具體來說就是需要
<uses-permission android:name="android.permission.DELETE_PACKAGES"/>許可權,但<uses-permission android:name="android.permission.DELETE_PACKAGES"/>是系統級許可權,普通APP根本無法獲取到,如果在AndroidManifest.xml強行加入該許可權編譯也不會通過

唯一的辦法就是使用APK反編譯工具在Android Studio之外修改許可權,比如用apktool反編譯工具先把apk文件解壓出來,用編輯器在AndroidManifest.xml中加入上面的兩個許可權,然後在用工具apktool重新打包

獲得<uses-permission android:name="android.permission.DELETE_PACKAGES"/>許可權後,定義PackageDeleteObserver實現類,實現packageDeleted方法

private class PackageDeleteObserver extends IPackageDeleteObserver.Stub {
private int position;
private int mFlag;

public PackageDeleteObserver(int index, int flag) {
position = index;
mFlag = flag;// 0卸載1個包,1卸載N個包 N>1
}

@Override
public void packageDeleted(String arg0, int arg1)
throws RemoteException {
// TODO Auto-generated method stub
Message msg;
msg = mHandle.obtainMessage();
msg.what = FLAG_DELETE_VIRUS;
msg.arg1 = position;
msg.arg2 = mFlag;
msg.sendToTarget();
}
}

獲取PackageManager 對象,調用deletePackage方法

PackageManager pkgManager = mContext.getPackageManager();
PackageDeleteObserver observer = new PackageDeleteObserver(currVirus, 1);
pkgManager.deletePackage(pakName, observer, 0); 123

最後,還需要進行系統簽名才能使用

對apk進行系統簽名:

java -jar signapk.jar platform.x509.pem platform.pk8 test.apk test_signed.apk1

將簽名之後的文件 push到手機中,需要root許可權

方法三

通過pm命令方式實現靜默卸載

該方法直接對Android系統執行卸載命令,需要root許可權

//pm命令可以通過adb在shell中執行,同樣,我們可以通過代碼來執行 public static String execCommand(String... command) {
Process process = null;
InputStream errIs = null;
InputStream inIs = null;
String result = ""; try {
process = new ProcessBuilder().command(command).start();
ByteArrayOutputStream baos = new ByteArrayOutputStream(); int read = -1;
errIs = process.getErrorStream(); while ((read = errIs.read()) != -1) {
baos.write(read);
}
inIs = process.getInputStream(); while ((read = inIs.read()) != -1) {
baos.write(read);
}
result = new String(baos.toByteArray()); if (inIs != null)
inIs.close(); if (errIs != null)
errIs.close();
process.destroy();
} catch (IOException e) {

result = e.getMessage();
} return result;
}222324252627282930

執行卸載命令

execCommand("pm","uninstall", "packageName");1

編譯生成apk時,要在manifest文件下添加Android:sharedUserId=」android.uid.system」

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xieyuan.mhfilemanager"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly"
android:sharedUserId="android.uid.system" >

熱點內容
奧迪a6中配有哪些配置 發布:2025-06-18 10:33:13 瀏覽:303
物理微課分鏡頭腳本 發布:2025-06-18 10:25:30 瀏覽:813
如何找到電腦上的空密碼設置 發布:2025-06-18 10:23:02 瀏覽:901
c語言編譯分段函數怎麼寫 發布:2025-06-18 10:23:00 瀏覽:727
php正則表達式中文 發布:2025-06-18 10:14:10 瀏覽:528
2345下載文件夾 發布:2025-06-18 10:13:29 瀏覽:490
win7主題文件夾背景 發布:2025-06-18 10:12:04 瀏覽:673
銳捷怎麼查看介面配置 發布:2025-06-18 10:10:37 瀏覽:795
七日殺怎麼看自己的伺服器ip 發布:2025-06-18 10:10:28 瀏覽:553
php視頻文件 發布:2025-06-18 10:09:50 瀏覽:774