资源简介

android应用后台安装,静默安装的代码实现方法。以及编译出来的apk

资源截图

代码片段和文件信息

package com.smart.store.util;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.util.Log;

import java.io.File;
import java.util.linkedList;

import android.content.pm.IPackageInstallObserver;
import android.content.pm.PackageParser;
/**
 * this class for install apk on background  and install one by one in queue
 * easy use by addInstallApk(...) function
 */
public class InstallApkQueue {
public final static String Tag = InstallApkQueue.class.getName();

public static InstallApkQueue getInstance(Context ctx) {
if (null == mSelf) {
mSelf = new InstallApkQueue(ctx);
}
return mSelf;
}

public static PackageParser.Package getPackageInfo(Uri packageURI) {
        final String archiveFilePath = packageURI.getPath();
        PackageParser packageParser = new PackageParser(archiveFilePath);
        File sourceFile = new File(archiveFilePath);
        DisplayMetrics metrics = new DisplayMetrics();
        metrics.setToDefaults();
        PackageParser.Package pkg =  packageParser.parsePackage(sourceFile
                archiveFilePath metrics 0);
        // Nuke the parser reference.
        packageParser = null;
        return pkg;
    }

/**
 * maybe not init this object before
 */
public static boolean addInstallApk(Uri packageUri 
IInstallCallBack callBack) {
if (null == mSelf) {
return false;
} else {
mSelf.addInstallApkObj(packageUrigetPackageInfo(packageUri).applicationInfo.packageName callBack);
return true;
}
}

/**
 * give Context when not init this object before will init this
 */
public static void addInstallApk(Context ctx Uri packageUri
 IInstallCallBack callBack) {
if (null == mSelf) {
getInstance(ctx);
}
mSelf.addInstallApkObj(packageUri getPackageInfo(packageUri).applicationInfo.packageName callBack);
}

private static InstallApkQueue mSelf = null;

private InstallApkQueue(Context ctx) {
mContext = ctx;
init();
}

private Context mContext;

private Handler mHandler;

private ThreadWorker mThreadWorker;

private void init() {
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case INSTALL_COMPLETE:
if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) {
mCurrentObj._callBack.callBack(mCurrentObj._packageUri
mCurrentObj._packageName
PackageInstallResult.SUCC);
} else if (msg.arg1 == PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE) {
mCurrentObj._callBack.callBack(mCurrentObj._packageUri
mCurrentObj._packageName
PackageInstallResult.FAIL);
} else {
mCurrentObj._callBack.callBack(mCurrentObj._packageUri
mCurrentObj._packageName
PackageInstallResult.OTHER);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-12-23 02:00  宸ョ▼鍜宎pk\
     目录           0  2011-12-23 01:31  宸ョ▼鍜宎pk\installback2\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\src\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\assets\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pk\installback2\bin\
     目录           0  2011-12-23 01:35  宸ョ▼鍜宎pk\installback2\gen\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\src\com\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\values\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\layout\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\drawable-ldpi\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\drawable-mdpi\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\drawable-hdpi\
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pk\installback2\bin\com\
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\src\com\smart\
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pk\installback2\bin\com\smart\
     目录           0  2011-12-23 01:32  宸ョ▼鍜宎pk\installback2\src\com\smart\Installback\
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pk\installback2\bin\com\smart\Installback\
     文件     2267910  2011-12-23 01:59  宸ョ▼鍜宎pk\UC.apk
     文件       18956  2011-12-23 01:58  宸ョ▼鍜宎pk\InstallActivity.apk
     文件        1034  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\proguard.cfg
     文件         954  2011-09-14 00:45  宸ョ▼鍜宎pk\installback2\AndroidManifest.xml
     文件         273  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\.classpath
     文件         815  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\.project
     文件         222  2011-09-13 10:11  宸ョ▼鍜宎pk\installback2\Android.mk
     文件         360  2011-12-23 01:31  宸ョ▼鍜宎pk\installback2\project.properties
     文件        6379  2011-09-14 07:21  宸ョ▼鍜宎pk\installback2\InstallApkQueue.java
     文件         177  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\values\strings.xml
     文件         567  2011-09-13 10:04  宸ョ▼鍜宎pk\installback2\res\layout\main.xml
     文件        1723  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\drawable-ldpi\icon.png
     文件        2574  2011-09-13 10:01  宸ョ▼鍜宎pk\installback2\res\drawable-mdpi\icon.png
............此处省略16个文件信息

评论

共有 条评论