android 获取当前系统及应用信息(二)

1.获取手机安装的应用信息(排除系统自带):

复制代码
private String getAllApp() {  
             String result = "";  
             List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);  
             for (PackageInfo i : packages) {  
                 if ((i.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {  
                     result += i.applicationInfo.loadLabel(getPackageManager()).toString() + ",";  
                 }  
             }  
             return result.substring(0, result.length() - 1);  
     }
复制代码

以字符串的形式返回应用的名字app1,app2,app3,......,appn中间的以","分开。当然还可以得到包名,icon图标,等等 。

2.获取手机可用内存和总内存:

复制代码
private String[] getTotalMemory() {  
            String[] result = {"",""};  //1-total 2-avail  
            ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();    
            mActivityManager.getMemoryInfo(mi);    
            long mTotalMem = 0;  
            long mAvailMem = mi.availMem;  
            String str1 = "/proc/meminfo";  
            String str2;  
            String[] arrayOfString;  
            try {  
                FileReader localFileReader = new FileReader(str1);  
                BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);  
                str2 = localBufferedReader.readLine();  
                arrayOfString = str2.split("\\s+");  
                mTotalMem = Integer.valueOf(arrayOfString[1]).intValue() * 1024;  
                localBufferedReader.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            result[0] = Formatter.formatFileSize(this, mTotalMem);  
            result[1] = Formatter.formatFileSize(this, mAvailMem);  
            Log.i(TAG, "meminfo total:" + result[0] + " used:" + result[1]);  
            return result;  
        }
复制代码

手机的内存信息主要在/proc/meminfo文件中,其中第一行就是总内存,而剩余内存可通过 ActivityManager.MemoryInfo得到

3.手机CPU信息

复制代码
private String[] getCpuInfo() {  
             String str1 = "/proc/cpuinfo";  
             String str2 = "";  
             String[] cpuInfo = {"", ""};  //1-cpu型号  //2-cpu频率  
             String[] arrayOfString;  
             try {  
                 FileReader fr = new FileReader(str1);  
                 BufferedReader localBufferedReader = new BufferedReader(fr, 8192);  
                 str2 = localBufferedReader.readLine();  
                 arrayOfString = str2.split("\\s+");  
                 for (int i = 2; i < arrayOfString.length; i++) {  
                     cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";  
                 }  
                 str2 = localBufferedReader.readLine();  
                 arrayOfString = str2.split("\\s+");  
                 cpuInfo[1] += arrayOfString[2];  
                 localBufferedReader.close();  
             } catch (IOException e) {  
             }  
             Log.i(TAG, "cpuinfo:" + cpuInfo[0] + " " + cpuInfo[1]);  
             return cpuInfo;  
         }
复制代码

和内存信息同理,cpu信息可通过读取/proc/cpuinfo文件来得到,其中第一行为cpu型号,第二行为cpu频率。

4.获取手机MAC地址:

private String getMacAddress(){  
             String result = "";  
             WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);  
             WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
             result = wifiInfo.getMacAddress();  
             Log.i(TAG, "macAdd:" + result);  
             return result;  
     }

MAC地址比较容易,直接通过WifiManager得到。

5.IMEI号,IESI号,手机型号等:

private void getInfo() {  
             TelephonyManager mTm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);  
             String imei = mTm.getDeviceId();  
             String imsi = mTm.getSubscriberId();  
             String mtype = android.os.Build.MODEL; // 手机型号  
             String numer = mTm.getLine1Number(); // 手机号码,有的可得,有的不可得  
         }

6.获取手机屏幕高度:

复制代码
private void getWeithAndHeight(){  
            //这种方式在service中无法使用,  
            DisplayMetrics dm = new DisplayMetrics();  
            getWindowManager().getDefaultDisplay().getMetrics(dm);  
            String width = dm.widthPixels;              //
            String height = dm.heightPixels;           ////在service中也能得到高和宽  
            WindowManager mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);  
            width = mWindowManager.getDefaultDisplay().getWidth();  
            height = mWindowManager.getDefaultDisplay().getHeight();  
        }
复制代码

 

posted @   似水流云  阅读(378)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示