import android.app.Activity;
import com.jayway.android.robotium.solo.*;
import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.*;
import android.widget.*;
/***/
@SuppressWarnings("unchecked")
public class Test_Case_001 extends Test {
private static final String LAUNCHER_ACTIVITY_CLASSNAME = "com.aaa.activities.SplashActivity";
private static Class<Activity> launchActivityClass;
static {
try {
launchActivityClass = (Class<Activity>)Class.forName(LAUNCHER_ACTIVITY_CLASSNAME);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public Test_Case_001() {
super("com.aaa.bbb", launchActivityClass);
}
public void testRecorded()
{
assertTrue("Activity \"StartActivity\" is not started.", solo.waitForActivity("StartActivity", 30000));
solo.sleep(3000);
Activity act = solo.getCurrentActivity();
ApplicationInfo appInfo = act.getApplicationInfo();
System.out.println("-----------aaaa------"+appInfo);
Context context = act.getApplicationContext();
System.out.println("-----------bbbbb------"+context);
String archiveFilePath="/storage/sdcard0/AMdebug.apk";
PackageManager pm = act.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
System.out.println("-----------cccc------"+info);
if(info!=null)
{
//获取并打印当前的版本信息
String version = info.versionName;
System.out.println("-----------dddddd------"+version);
}
}
}
获取版本信息与version code
public void testRecorded() {
//等待 Activity "StartActivity" 启动
assertTrue("Activity \"StartActivity\" is not started.", solo.waitForActivity("StartActivity", 30000));
solo.sleep(2000);
Activity act = solo.getCurrentActivity();
ApplicationInfo appInfo = act.getApplicationInfo();
int sdkVer = appInfo.targetSdkVersion;
System.out.println("--------aaa----"+sdkVer);
PackageManager pm = act.getPackageManager();
String appName = pm.getApplicationLabel(appInfo).toString();
System.out.println("--------bbbb----"+appName);
String path = act.getPackageResourcePath();
System.out.println("--------ccc----"+path);
PackageInfo info = pm.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);
System.out.println("--------ddddd----"+info);
if(info!=null)
{
String version = info.versionName;
int verCode = info.versionCode;
System.out.println("version is:"+version+"version code:"+verCode);
}
}
参考代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String archiveFilePath="sdcard/download/Law.apk";//安装包路径
PackageManager pm = getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
if(info != null){
ApplicationInfo appInfo = info.applicationInfo;
String appName = pm.getApplicationLabel(appInfo).toString();
String packageName = appInfo.packageName; //得到安装包名称
String version=info.versionName; //得到版本信息
Toast.makeText(test4.this, "packageName:"+packageName+";version:"+version, Toast.LENGTH_LONG).show();
Drawable icon = pm.getApplicationIcon(appInfo);//得到图标信息
TextView tv = (TextView)findViewById(R.id.tv); //显示图标
tv.setBackgroundDrawable(icon);
public void apkInfo(String absPath,Context context) {
PackageManager pm = context.getPackageManager();
PackageInfo pkgInfo = pm.getPackageArchiveInfo(absPath,PackageManager.GET_ACTIVITIES);
if (pkgInfo != null) {
ApplicationInfo appInfo = pkgInfo.applicationInfo;
/* 必须加这两句,不然下面icon获取是default icon而不是应用包的icon */
appInfo.sourceDir = absPath;
appInfo.publicSourceDir = absPath;
String appName = pm.getApplicationLabel(appInfo).toString();// 得到应用名
String packageName = appInfo.packageName; // 得到包名
String version = pkgInfo.versionName; // 得到版本信息
/* icon1和icon2其实是一样的 */
Drawable icon1 = pm.getApplicationIcon(appInfo);// 得到图标信息
Drawable icon2 = appInfo.loadIcon(pm);
String pkgInfoStr = String.format("PackageName:%s, Vesion: %s, AppName: %s", packageName, version, appName);
Log.i("aaa", String.format("PkgInfo: %s", pkgInfoStr));
}
}