UserAgent和获取手机内安装的所有app列表

获取手机内安装的所有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字符串同理!!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值