package cm.android.common.pm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.content.Context;
import android.net.Uri;
/**
* Created by Administrator on 2016/8/17.
*/
public class PackageInstaller {
private static final Logger logger = LoggerFactory.getLogger("pm");
//
// private Context context;
//
// public PackageInstaller(Context context) {
// }
//
// public void instatllBatch(String path, String packageName) {
//
// logger.info("path=" + path);
// int installFlags = 0;
// try {
// PackageInfo pi = context.getPackageManager().getPackageInfo(packageName, android.content.pm.PackageManager.GET_UNINSTALLED_PACKAGES);
// if (pi != null) {
// installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
// }
// } catch (android.content.pm.PackageManager.NameNotFoundException e) {
// }
// if ((installFlags & PackageManager.INSTALL_REPLACE_EXISTING) != 0) {
// logger.info("Replacing package:" + packageName);
// }
//
// // Create temp file before invoking install api
// mTmpFile = createTempPackageFile(path);
// if (mTmpFile == null) {
// // Message msg = mHandler.obtainMessage(INSTALL_COMPLETE);
// // msg.arg1 = PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE;
// // mHandler.sendMessage(msg);
// return;
// }
// Uri mPackageURI = Uri.parse("file://" + mTmpFile.getPath());
// String installerPackageName = mContext.getIntent().getStringExtra(
// Intent.EXTRA_INSTALLER_PACKAGE_NAME);
//
// PackageInstallObserver observer = new PackageInstallObserver();
// PackageManager.getInstance().install(context, mPackageURI, observer, installFlags);
// }
//
// private File createTempPackageFile(String filePath) {
// File tmpPackageFile = context.getFileStreamPath(TMP_FILE_NAME);
// if (tmpPackageFile == null) {
// Log.w(TAG, "Failed to create temp file");
// return null;
// }
// if (tmpPackageFile.exists()) {
// tmpPackageFile.delete();
// }
// // Open file to make it world readable
// FileOutputStream fos;
// try {
// fos = openFileOutput(TMP_FILE_NAME, MODE_WORLD_READABLE);
// } catch (FileNotFoundException e1) {
// Log.e(TAG, "Error opening file " + TMP_FILE_NAME);
// return null;
// }
// try {
// fos.close();
// } catch (IOException e) {
// Log.e(TAG, "Error opening file " + TMP_FILE_NAME);
// return null;
// }
//
// File srcPackageFile = new File(filePath);
// if (!FileUtils.copyFile(srcPackageFile, tmpPackageFile)) {
// Log.w(TAG, "Failed to make copy of file: " + srcPackageFile);
// return null;
// }
// return tmpPackageFile;
// }
public static void install(Context context, Uri uri, final PackageManager.PackageInstallObserver observer) {
// int installFlags = 0;
// try {
// PackageInfo pi = context.getPackageManager().getPackageInfo(packageName, android.content.pm.PackageManager.GET_UNINSTALLED_PACKAGES);
// if (pi != null) {
// installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
// }
// } catch (android.content.pm.PackageManager.NameNotFoundException e) {
// }
// if ((installFlags & PackageManager.INSTALL_REPLACE_EXISTING) != 0) {
// logger.info("Replacing package:" + packageName);
// }
PackageManager.getInstance().installPackage(context, uri, observer, PackageManager.INSTALL_REPLACE_EXISTING);
}
public static void uninstall(Context context, String packageName, final PackageManager.PackageDeleteObserver observer) {
PackageManager.getInstance().deletePackage(context, packageName, observer, 0);
}
}