Android apk安装的几种方法
2013-08-04 18:59
393 查看
1.使用linux命令安装:
apk事先保存在sdcard上面,如果安装不成功,可能权限不够,chmod 777一下,问题就解决了。try { String cmd = "pm install -r sdcard/TestStartActivity_sig2.apk"; Runtime.getRuntime().exec(cmd); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
2.使用adb命令安装。
am start -n 包名/Activity所在包名及类名adb shell am start -n com.liusl.test/com.liusl.test.MainActivity
3.使用发送Intent消息打开apk安装程序
public void installApk(String saveFileName) { File apkfile = new File(saveFileName); if (!apkfile.exists()) { Log.i(TAG, "installApk..file not exist!" + apkfile); return; } Intent i = new Intent(Intent.ACTION_VIEW); i.setDataAndType(Uri.parse("file://" + apkfile.toString()),"application/vnd.android.package-archive"); mContext.startActivity(i); }
4.静默安装:安装过程中没有任何提示的安装
[1] 重写pacakgemanager的相关类
IPackageDateObserver.java ,IPackageDeleteObserver.java,IPackageInstallObserver.java,IPackageMoveObserver.java,IPackageStateObserver.java,PackageManager.java[2] 注册消息接收类
private static BroadcastReceiver mPackageInstallReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(UpdateManager.PACKAGE_INSTALL_SUCC)) { Log.i(TAG, " receive .PACKAGE_INSTALL_SUCC"); } else { Log.i(TAG, " receive .PACKAGE_INSTALL_FAILED."); } } };
[3] 安装apk发送消息
private boolean installApkDefault(Context context, String fileName, String packageName) { Log.d(TAG, "installApkDefault:" + packageName + ",fileName:" + fileName); File file = new File(fileName); int installFlags = 0; if (!file.exists()) return false; installFlags |= PackageManager.INSTALL_REPLACE_EXISTING; PackageManager pm = context.getPackageManager(); try { IPackageInstallObserver observer = new MyPakcageInstallObserver(context, fileName,packageName); Log.i(TAG, "installFlags:" + installFlags + "packagename:" + packageName); pm.installPackage(Uri.fromFile(file), observer, installFlags, packageName); return true; } catch (Exception e) { Log.e(TAG, "installApkDefault fail ;exception: " + e.getMessage()); } return false; } private class MyPakcageInstallObserver extends IPackageInstallObserver.Stub { Context cxt; String filename; String pkname; public MyPakcageInstallObserver(Context c, String filename, String packagename) { this.cxt = c; this.filename = filename; this.pkname = packagename; } @Override public void packageInstalled(String packageName, int returnCode) { Log.i("MyPakcageInstallObserver", "returnCode = " + returnCode);// 返回1代表安装成功 if (pkname != null && pkname.equals(packageName)) { Intent it = new Intent(); it.putExtra("install_returnCode", returnCode); it.putExtra("install_packageName", packageName); if (returnCode == 1) { it.setAction(UpdateManager.PACKAGE_INSTALL_SUCC); } else { it.setAction(UpdateManager.PACKAGE_INSTALL_FAILED); File f = new File(filename); if (f.exists()) { f.delete(); } } cxt.sendBroadcast(it); } } }
相关文章推荐
- Android apk安装的几种方法(4)
- Android 安装release版apk出现多个实例的问题解决方法
- Android获取APK包名的几种方法
- android adb push 与 adb install 区别(两种安装APK的方法)
- 求教Android 将APK安装到/system/app的方法
- Android 启动 卸载 安装 apk 的方法
- Android常用工具方法(关闭软键盘,安装apk,检测程序是否安装...)
- 将HTML5封装成android应用APK文件的几种方法
- [Android]实现静默安装APK的两种方法
- [Android]实现静默安装APK的两种方法
- 求教Android 将APK安装到/system/app的方法
- [Android]实现静默安装APK的两种方法(1)
- 命令行从Android手机中导出已安装APK的方法调研
- [Android]实现静默安装APK的两种方法
- android 启动apk的几种方法
- 将HTML5封装成android应用APK文件的几种方法
- Android客户端apk自动检测更新自动下载自动安装的实现方法
- [Android开发] 修改Gradle实现同时安装多个相同apk共存的方法和分析
- 在Android 模拟器上安装和卸载APK包的方法
- Android下未root时导出已安装APK的方法