获取手机内安装的所有app列表
注意: 获取收集所有app的信息,很耗时,需要在子线程中执行
1、新建两个实体类 BaseBean和ListAppBean
import android.text.TextUtils;
import org.json.JSONObject;
import java.io.Serializable;
public class BaseBean implements Serializable {
protected JSONObject jsonObject = new JSONObject();
protected JSONObject toJSONObject() {
return jsonObject;
}
protected BaseBean() {
}
protected String isEmpty(String value) {
if (TextUtils.isEmpty(value)) {
return BaseData.UNKNOWN_PARAM;
}
return value;
}
protected String isEmpty(CharSequence value) {
if (value == null) {
return BaseData.UNKNOWN_PARAM;
}
return value.toString();
}
}
import android.graphics.drawable.Drawable;
import android.util.Log;
import com.vdsp.zcadv.base.BaseBean;
import com.vdsp.zcadv.base.BaseData;
import org.json.JSONObject;
public class ListAppBean extends BaseBean {
private static final String TAG = ListAppBean.class.getSimpleName();
/**
* app名字
*/
private String appName;
/**
* 包名
*/
private String packageName;
/**
* 包签名
*/
private String packageSign;
/**
* 版本号
*/
private long appVersionCode;
/**
* 版本名字
*/
private String appVersionName;
/**
* 目标系统版本号
*/
private int targetSdkVersion;
/**
* 最低系统版本号
**/
private int minSdkVersion;
/**
* 描述
*/
private CharSequence description;
/**
* 图标
*/
private Drawable icon;
/**
* 是否是系统APP
*/
private boolean isSystem;
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getPackageSign() {
return packageSign;
}
public void setPackageSign(String packageSign) {
this.packageSign = packageSign;
}
public long getAppVersionCode() {
return appVersionCode;
}
public void setAppVersionCode(long appVersionCode) {
this.appVersionCode = appVersionCode;
}
public String getAppVersionName() {
return appVersionName;
}
public void setAppVersionName(String appVersionName) {
this.appVersionName = appVersionName;
}
public int getTargetSdkVersion() {
return targetSdkVersion;
}
public void setTargetSdkVersion(int targetSdkVersion) {
this.targetSdkVersion = targetSdkVersion;
}
public int getMinSdkVersion() {
return minSdkVersion;
}
public void setMinSdkVersion(int minSdkVersion) {
this.minSdkVersion = minSdkVersion;
}
public CharSequence getDescription() {
return description;
}
public void setDescription(CharSequence description) {
this.description = description;
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
public boolean isSystem() {
return isSystem;
}
public void setSystem(boolean system) {
isSystem = system;
}
@Override
protected JSONObject toJSONObject() {
try {
jsonObject.put(BaseData.App.APP_NAME, isEmpty(appName));
jsonObject.put(BaseData.App.PACKAGE_NAME, isEmpty(packageName));
jsonObject.put(BaseData.App.PACKAGE_SIGN, isEmpty(packageSign));
jsonObject.put(BaseData.App.APP_VERSION_CODE, appVersionCode);
jsonObject.put(BaseData.App.APP_VERSION_NAME, isEmpty(appVersionName));
jsonObject.put(BaseData.App.APP_TARGET_SDK_VERSION, targetSdkVersion);
jsonObject.put(BaseData.App.APP_MIN_SDK_VERSION, minSdkVersion);
jsonObject.put(BaseData.App.APP_DESCRIPTION, isEmpty(description));
jsonObject.put(BaseData.App.APP_ICON, icon);
jsonObject.put(BaseData.AppList.IS_SYSTEM, isSystem);
} catch (Exception e) {
Log.e(TAG, e.toString());
}
return super.toJSONObject();
}
}
2、获取所有APP的方法
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
import com.vdsp.zcadv.utils.PackageSignUtil;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
class ListAppInfo {
private static final String TAG = ListAppInfo.class.getSimpleName();
static List<JSONObject> getMobListApp(Context context) {
List<JSONObject> appLists = new ArrayList<>();
try {
PackageManager packageManager = context.getPackageManager();
List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
for (PackageInfo packageInfo : packageInfoList) {
ListAppBean listAppBean = new ListAppBean();
listAppBean.setPackageName(packageInfo.packageName);
listAppBean.setAppVersionName(packageInfo.versionName);
listAppBean.setAppName(packageInfo.applicationInfo.loadLabel(packageManager).toString());
listAppBean.setDescription(packageInfo.applicationInfo.loadDescription(packageManager));
listAppBean.setIcon(packageInfo.applicationInfo.loadIcon(packageManager));
listAppBean.setTargetSdkVersion(packageInfo.applicationInfo.targetSdkVersion);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
listAppBean.setMinSdkVersion(packageInfo.applicationInfo.minSdkVersion);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
listAppBean.setAppVersionCode(packageInfo.getLongVersionCode());
} else {
listAppBean.setAppVersionCode(packageInfo.versionCode);
}
listAppBean.setPackageSign(PackageSignUtil.getSign(context, listAppBean.getPackageName()));
listAppBean.setSystem(!((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) == 0));
appLists.add(listAppBean.toJSONObject());
}
} catch (Exception e) {
Log.e(TAG, e.toString());
}
return appLists;
}
}
UA数据获取
public class UserAgentHelper {
public static String getDefaultUserAgent() {
String userAgent = null;
try {
Method localMethod = WebSettings.class.getDeclaredMethod("getDefaultUserAgent", new Class[]{Context.class});
if (localMethod != null) {
userAgent = (String) localMethod.invoke(WebSettings.class, new Object[]{MobileHardWareHelper.getContext()});
}
if (userAgent == null) {
userAgent = System.getProperty("http.agent");
}
} catch (Exception localException) {
}
return TextUtils.isEmpty(userAgent) ? BaseData.UNKNOWN_PARAM : userAgent;
}
}
提示:获取速度跟手机安装列表的数量成正比,返回的Json字符串同理!!!!