android应用后台安装,静默安装的代码实现方法


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  宸ョ▼鍜宎pkinstallback2
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2src
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2assets
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
es
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pkinstallback2in
     目录           0  2011-12-23 01:35  宸ョ▼鍜宎pkinstallback2gen
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2srccom
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
esvalues
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
eslayout
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
esdrawable-ldpi
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
esdrawable-mdpi
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
esdrawable-hdpi
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pkinstallback2incom
     目录           0  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2srccomsmart
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pkinstallback2incomsmart
     目录           0  2011-12-23 01:32  宸ョ▼鍜宎pkinstallback2srccomsmartInstallback
     目录           0  2011-10-14 07:29  宸ョ▼鍜宎pkinstallback2incomsmartInstallback
     文件     2267910  2011-12-23 01:59  宸ョ▼鍜宎pkUC.apk
     文件       18956  2011-12-23 01:58  宸ョ▼鍜宎pkInstallActivity.apk
     文件        1034  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2proguard.cfg
     文件         954  2011-09-14 00:45  宸ョ▼鍜宎pkinstallback2AndroidManifest.xml
     文件         273  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2.classpath
     文件         815  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2.project
     文件         222  2011-09-13 10:11  宸ョ▼鍜宎pkinstallback2Android.mk
     文件         360  2011-12-23 01:31  宸ョ▼鍜宎pkinstallback2project.properties
     文件        6379  2011-09-14 07:21  宸ョ▼鍜宎pkinstallback2InstallApkQueue.java
     文件         177  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
esvaluesstrings.xml
     文件         567  2011-09-13 10:04  宸ョ▼鍜宎pkinstallback2
eslayoutmain.xml
     文件        1723  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
esdrawable-ldpiicon.png
     文件        2574  2011-09-13 10:01  宸ョ▼鍜宎pkinstallback2
esdrawable-mdpiicon.png
............此处省略16个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)