亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android實現靜默安裝與卸載的方法

2020-04-11 11:32:30
字體:
來源:轉載
供稿:網友

本文實例講述了android實現靜默安裝與卸載的方法。分享給大家供大家參考。具體如下:

方法1:【使用調用接口方法,由于安裝卸載應用程序的部分API是隱藏的,所以必須下載Android系統源碼,在源碼下開發并編譯之后使用MM命令編譯生成APK文件】

import java.io.File;import android.app.Activity;import android.os.Bundle;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.content.pm.PackageManager.NameNotFoundException;import android.content.pm.IPackageInstallObserver;import android.content.pm.IPackageDeleteObserver;import android.content.res.Resources;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;public class InstallActivity extends Activity { /** Called when the activity is first created. */ private String APK_NAME = "QQHD-mini.apk"; private Button install = null; private Button uninstall = null; private final int INSTALL_COMPLETE = 1; private final int UNINSTALL_COMPLETE = 2; final static int SUCCEEDED = 1; final static int FAILED = 0; public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.install_uninstall);  install = (Button) findViewById(R.id.install); uninstall = (Button) findViewById(R.id.uninstall); uninstall.setOnClickListener(listener1);  install.setOnClickListener(listener2);} private OnClickListener listener2=new OnClickListener(){  public void onClick(View v) {   String fileName = Environment.getExternalStorageDirectory() + "/" + APK_NAME;    Uri uri = Uri.fromFile(new File(fileName));   int installFlags = 0;   PackageManager pm = getPackageManager();   try {    PackageInfo pi = pm.getPackageInfo("com.tencent.minihd.qq",       PackageManager.GET_UNINSTALLED_PACKAGES);    if(pi != null) {     installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;    }   } catch (NameNotFoundException e) {}   PackageInstallObserver observer = new PackageInstallObserver();   pm.installPackage(uri, observer, installFlags, "com.tencent.minihd.qq");  } }; class PackageInstallObserver extends IPackageInstallObserver.Stub {  public void packageInstalled(String packageName, int returnCode) {   Message msg = mHandler.obtainMessage(INSTALL_COMPLETE);   msg.arg1 = returnCode;   mHandler.sendMessage(msg);  } }; private Handler mHandler = new Handler() {  public void handleMessage(Message msg) {   switch (msg.what) {    case INSTALL_COMPLETE:     int centerTextLabel;     Drawable centerTextDrawable = null;     if(msg.arg1 == SUCCEEDED) {      Toast.makeText(getApplicationContext(), "install apk SUCCEEDED", Toast.LENGTH_SHORT).show();     } else {}     if (centerTextDrawable != null) {}     break; case UNINSTALL_COMPLETE:     int centerTextLabel2;     Drawable centerTextDrawable2 = null;     if(msg.arg1 == SUCCEEDED) {      Toast.makeText(getApplicationContext(), "uninstall apk SUCCEEDED", Toast.LENGTH_SHORT).show();     } else {}     if (centerTextDrawable2 != null) {}     break;     default:     break;   }  } }; private OnClickListener listener1=new OnClickListener(){  public void onClick(View v) {   PackageManager pm = getPackageManager();   PackageDeleteObserver observer = new PackageDeleteObserver();   pm.deletePackage("com.tencent.minihd.qq", observer, 0);  } }; private class PackageDeleteObserver extends IPackageDeleteObserver.Stub {  public void packageDeleted(String packageName, int returnCode) {   Message msg = mHandler.obtainMessage(UNINSTALL_COMPLETE);   msg.arg1 = returnCode;   mHandler.sendMessage(msg);  }  }}

安裝、卸載相關權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INSTALL_PACKAGES" /><uses-permission android:name="android.permission.DELETE_PACKAGES" /><uses-permission android:name="android.permission.CLEAR_APP_CACHE" /><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />

方法2:【需要獲取root權限或者和rom擁有一樣的簽名,即讓該apk以System的身份在系統中運行】

private void test() { execCommand("system/bin/pm install -r " + "sdcard/xxx.apk"); // xxx.apk放置在內置儲存的根目錄下(mnt/sdcard/xxx.apk) // execCommand("system/bin/pm uninstall " + PACKAGE_NAME);  //PACKAGE_NAME為xxx.apk包名 } public boolean execCommand(String cmd) { Process process = null; try { process = Runtime.getRuntime().exec(cmd); process.waitFor(); } catch (Exception e) { return false; } finally { try { process.destroy(); } catch (Exception e) { } } return true;}

其他方法:一些第三方jar包等方式。

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩成人av网| 亚洲精品一区二区网址| 亚洲成色www8888| 91国产中文字幕| 亚洲国产欧美自拍| 亚洲精品日韩久久久| 精品成人乱色一区二区| 国产91色在线|| 国产精品亚洲精品| 欧美精品videos性欧美| 国产精品精品视频一区二区三区| 欧亚精品在线观看| 成人羞羞国产免费| 亚洲国产欧美一区二区三区同亚洲| 亚洲一区久久久| 久久亚洲精品一区| 精品亚洲永久免费精品| 最新国产精品亚洲| 国产日韩精品入口| 国产一级揄自揄精品视频| 亚洲综合日韩在线| 欧美成人sm免费视频| 国产精品国产三级国产专播精品人| 国产欧美日韩综合精品| 欧美激情第一页xxx| 亚洲а∨天堂久久精品9966| 日本亚洲精品在线观看| 亚洲一级片在线看| 久热国产精品视频| 国产91久久婷婷一区二区| 久久久久北条麻妃免费看| 91在线观看免费网站| 欧美在线视频免费| 国a精品视频大全| 日韩一二三在线视频播| 亚洲sss综合天堂久久| 欧美在线视频a| 成人福利网站在线观看11| 在线日韩中文字幕| 亚洲二区在线播放视频| 亚洲无线码在线一区观看| 欧美第一黄色网| 91色视频在线导航| 国产成人a亚洲精品| 国产精品亚洲片夜色在线| 日韩中文字幕免费看| 欧美亚洲国产另类| 亚洲欧美日韩一区二区在线| 丰满岳妇乱一区二区三区| 日韩精品丝袜在线| 国产精品日韩欧美大师| 中文字幕av日韩| 国产日韩在线观看av| 亚洲人成电影在线观看天堂色| 亚洲精品乱码久久久久久按摩观| 欧美日韩国产综合新一区| 国产一区视频在线播放| 综合国产在线观看| 日本免费在线精品| 国产精品综合久久久| 欧美激情精品久久久久久| 日本在线观看天堂男亚洲| 免费av在线一区| 91国产精品电影| 成人激情春色网| www.日韩不卡电影av| 久久色免费在线视频| 欧美激情奇米色| 中文字幕一区日韩电影| 欧美日韩性视频在线| 亚洲精品中文字幕av| 成人福利视频在线观看| 日韩有码在线观看| 国产在线精品一区免费香蕉| 91久热免费在线视频| 欧美丰满老妇厨房牲生活| 精品成人乱色一区二区| 亚洲无限av看| 久久久久久这里只有精品| 91精品国产91久久久久| 97在线视频免费观看| 一区二区三区无码高清视频| 午夜精品理论片| 国产成人一区二| 久久中文字幕一区| 成人在线精品视频| 日本久久精品视频| 欧美激情a在线| 日韩资源在线观看| 久久中文字幕一区| 日韩精品小视频| 欧美高清视频在线| 在线播放国产一区中文字幕剧情欧美| 日韩成人中文电影| 91地址最新发布| 精品亚洲夜色av98在线观看| 最近2019中文字幕大全第二页| 久久久久久久久爱| 欧美尺度大的性做爰视频| 久久夜色精品国产| 亚洲欧美自拍一区| 国产精品女主播| 视频直播国产精品| 97精品国产aⅴ7777| 欧美寡妇偷汉性猛交| 一区二区在线视频播放| 91在线免费观看网站| 亚洲高清免费观看高清完整版| 欧美在线观看视频| 欧美日韩精品在线播放| 在线观看欧美www| 久久国产精品网站| 国产精品久久综合av爱欲tv| 久久综合久中文字幕青草| 欧美精品久久一区二区| 亚洲精品之草原avav久久| 亚洲a∨日韩av高清在线观看| 精品久久久久久久中文字幕| 国产欧美日韩精品丝袜高跟鞋| 亚洲精品在线91| 国产精品极品尤物在线观看| 亚洲a级在线播放观看| 国产精品女主播| 狠狠色香婷婷久久亚洲精品| 91免费看视频.| 欧美黄色小视频| 久久久99久久精品女同性| 91成人在线观看国产| 亚洲香蕉av在线一区二区三区| 欧美日韩国内自拍| 亚洲精品国精品久久99热一| 国产亚洲精品91在线| 国产精品自产拍高潮在线观看| 国产一区二区三区视频在线观看| 尤物九九久久国产精品的特点| 国产精品免费视频久久久| 日本成熟性欧美| 久久久久免费精品国产| 久久久精品日本| 欧美日韩国产精品一区二区不卡中文| 成人有码在线播放| 国产在线精品播放| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲色图17p| 91夜夜揉人人捏人人添红杏| 精品久久久999| 国产精品免费看久久久香蕉| 欧美黄色小视频| 国产精品女主播视频| 国产美女直播视频一区| 日韩精品免费在线| 久久国产精彩视频| 欧美性猛交xxxx偷拍洗澡| 97欧美精品一区二区三区| 国模极品一区二区三区| 国产精品69精品一区二区三区| 日韩在线视频播放| 日韩精品一区二区视频| 国产精品男人的天堂| 日韩在线国产精品| 亚洲黄页视频免费观看| 成人久久一区二区三区| 色哟哟亚洲精品一区二区| 久久久日本电影|