IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android获取uid和应用信息 -> 正文阅读

[移动开发]android获取uid和应用信息

step1:

package com.mondor.myapplication;

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;


public class NotificationEffectActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notification_effect);
        try {
            PackageManager manager = getPackageManager();
            PackageInfo packageInfo = manager.getPackageInfo(getPackageName(), 0);
            AppInfo mAppInfo = AppManagerUtils.getAppInfo(manager, packageInfo);
            Log.e("TAG", "uid_data: " + mAppInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String name = AppUtils.getAppName(NotificationEffectActivity.this);
        String packageName = AppUtils.getPackageName(NotificationEffectActivity.this);
        int uid = AppUtils.getUid(NotificationEffectActivity.this, packageName);
        Log.e("TAG", "uid_data: " + name + "\t" + packageName + "\t" + uid);
    }
}

step2:

package com.mondor.myapplication;


import android.graphics.drawable.Drawable;

public class AppInfo {
    public long memSize;            //占用的内存大小
    public String appPackageName;    //app包名
    public String appPath;            //app的路径
    public String appName;            //app名字
    public long appSize;            //app大小
    public Drawable appIcon;        //图标
    public boolean isSD;            //是否安装在SD卡上
    public boolean isSystem;        //是否是系统应用
    public boolean isCheck = false;    //是否被勾选
    public boolean isVirus = false;    //是否是病毒
    public String virusDesc = "安全";//如果是病毒,显示病毒的描述信息
    public int scanProgress = 0;    //查杀病毒的进度条
    public long cacheSize = 0;        //获取缓存的信息
    public long fluxSize = -1;        //获取使用的流量信息
    public int uid = 0;    //查杀病毒的进度条


    @Override
    public String toString() {
        return "AppInfo [memSize=" + memSize + ", appName=" + appName + "]";
    }

    @Override
    public int hashCode() {
        if (isSystem) {
            return 1;
        }
        return -1;
    }

    @Override
    public boolean equals(Object obj) {
        AppInfo info = (AppInfo) obj;
        if (info.isSystem) {
            return true;
        }
        return false;
    }


}

step3:

package com.mondor.myapplication;


import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Log;

public class AppUtils {

    /**
     * 获取应用程序名称
     */
    public static synchronized String getAppName(Context context) {
        try {
            PackageManager packageManager = context.getPackageManager();
            PackageInfo packageInfo = packageManager.getPackageInfo(
                    context.getPackageName(), 0);
            int labelRes = packageInfo.applicationInfo.labelRes;
            return context.getResources().getString(labelRes);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * [获取应用程序版本名称信息]
     *
     * @param context
     * @return 当前应用的版本名称
     */
    public static synchronized String getVersionName(Context context) {
        try {
            PackageManager packageManager = context.getPackageManager();
            PackageInfo packageInfo = packageManager.getPackageInfo(
                    context.getPackageName(), 0);
            return packageInfo.versionName;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * [获取应用程序版本名称信息]
     *
     * @param context
     * @return 当前应用的版本名称
     */
    public static synchronized int getVersionCode(Context context) {
        try {
            PackageManager packageManager = context.getPackageManager();
            PackageInfo packageInfo = packageManager.getPackageInfo(
                    context.getPackageName(), 0);
            return packageInfo.versionCode;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }


    /**
     * [获取应用程序版本名称信息]
     *
     * @param context
     * @return 当前应用的版本名称
     */
    public static synchronized String getPackageName(Context context) {
        try {
            PackageManager packageManager = context.getPackageManager();
            PackageInfo packageInfo = packageManager.getPackageInfo(
                    context.getPackageName(), 0);
            return packageInfo.packageName;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 获取图标 bitmap
     *
     * @param context
     */
    public static synchronized Bitmap getBitmap(Context context) {
        PackageManager packageManager = null;
        ApplicationInfo applicationInfo = null;
        try {
            packageManager = context.getApplicationContext()
                    .getPackageManager();
            applicationInfo = packageManager.getApplicationInfo(
                    context.getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            applicationInfo = null;
        }
        Drawable d = packageManager.getApplicationIcon(applicationInfo); //xxx根据自己的情况获取drawable
        BitmapDrawable bd = (BitmapDrawable) d;
        Bitmap bm = bd.getBitmap();
        return bm;
    }


    public static synchronized int getUid(Context context, String packageName) {
        try {
            PackageManager packageManager = context.getPackageManager();
            ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
            int uid = applicationInfo.uid;
            return uid;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }

}

step4:

package com.mondor.myapplication;


import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.net.TrafficStats;
import android.os.Environment;

/**
 * app管理工具
 */
public class AppManagerUtils {

    /**
     * 获取手机所有app的信息
     */
    public static List<AppInfo> getAppInfo(Context context) {
        List<AppInfo> list = new ArrayList<AppInfo>();

        // 获取包管理器
        PackageManager manager = context.getPackageManager();

        // 获取安装应用的包信息
        List<PackageInfo> packages = manager.getInstalledPackages(0);

        for (PackageInfo packageInfo : packages) {
            AppInfo info = getAppInfo(manager, packageInfo);
            list.add(info);
        }

        return list;
    }

    /**
     * 获取应用程序的信息
     */
    public static AppInfo getAppInfo(PackageManager manager, PackageInfo packageInfo) {
        AppInfo info = new AppInfo();
        // 获取程序的包名
        info.appPackageName = packageInfo.packageName;

        // 获取app安装详细信息
        ApplicationInfo applicationinfo = packageInfo.applicationInfo;
        // 获取应用名
        String appName = applicationinfo.loadLabel(manager).toString();
        info.appName = appName;

        // 根据uid获取应用的流量信息
        int uid = applicationinfo.uid;

        info.uid = uid;

        long uidRxBytes = TrafficStats.getUidRxBytes(uid);
        long uidTxBytes = TrafficStats.getUidTxBytes(uid);

        long flux = uidRxBytes + uidTxBytes;

        if (flux > 0) {
            info.fluxSize = flux;
        }

        // 获取app的路径
        info.appPath = applicationinfo.sourceDir;

        // 获取应用图标
        Drawable loadIcon = applicationinfo.loadIcon(manager);
        info.appIcon = loadIcon;

        // 获取应用大小
        String sourceDir = applicationinfo.sourceDir;
        File file = new File(sourceDir);
        long appSize = file.length();
        info.appSize = appSize;

        int flags = applicationinfo.flags;
        // 判断应用是否是系统应用
        if ((flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM) {
            info.isSystem = true;
        } else {
            info.isSystem = false;
        }

        // 判断应用是否安装在sd卡中
        if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == ApplicationInfo.FLAG_EXTERNAL_STORAGE) {
            info.isSD = true;
        } else {
            info.isSD = false;
        }

        return info;
    }

    /**
     * 获取手机内存总空间大小
     */
    public static long getRomTotalSpace() {
        File dataDirectory = Environment.getDataDirectory();

        return dataDirectory.getTotalSpace();
    }

    /**
     * 获取手机内存可用空间大小
     */
    public static long getRomFreeSpace() {
        File dataDirectory = Environment.getDataDirectory();

        return dataDirectory.getFreeSpace();
    }

    /**
     * 获取手机内存已经使用的空间大小
     */
    public static long getRomUsedSpace() {
        return getRomTotalSpace() - getRomFreeSpace();
    }

    /**
     * 获取sd卡已经使用的空间大小
     */
    public static long getSDUsedSpace() {
        return getSDTotalSpace() - getSDFreeSpace();
    }

    /**
     * 获取存储卡已经使用的空间大小
     */
    public static long getSDTotalSpace() {
        File sdDirectory = Environment.getExternalStorageDirectory();

        return sdDirectory.getTotalSpace();
    }

    /**
     * 获取sd卡可以使用空间大小
     */
    public static long getSDFreeSpace() {
        File sdDirectory = Environment.getExternalStorageDirectory();

        return sdDirectory.getFreeSpace();
    }

}

end

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:29:58  更:2022-05-05 11:31:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:42:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码