Android开发(42) 获取android手机基本信息

本文介绍如何使用Java代码在Android环境中获取设备的各种信息,包括内存大小、屏幕尺寸、IMEI号等标识符、MAC地址及CPU信息,并展示了读取短信内容的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一  权限配置:

<!-- 获取mac地址权限 -->  
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    
<!--获取手机信息权限 -->  
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

二  java代码:

	/**
	 * 获取android当前可用内存大小
	 */
	private String getAvailMemory() {// 获取android当前可用内存大小

		ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
		MemoryInfo mi = new MemoryInfo();
		am.getMemoryInfo(mi);
		// mi.availMem; 当前系统的可用内存

		return Formatter.formatFileSize(getBaseContext(), mi.availMem);// 将获取的内存大小规格化
	}

	/**
	 * 获得系统总内存
	 */
	private String getTotalMemory() {
		String str1 = "/proc/meminfo";// 系统内存信息文件
		String str2;
		String[] arrayOfString;
		long initial_memory = 0;

		try {
			FileReader localFileReader = new FileReader(str1);
			BufferedReader localBufferedReader = new BufferedReader(
					localFileReader, 8192);
			str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小

			arrayOfString = str2.split("\\s+");
			for (String num : arrayOfString) {
				Log.i(str2, num + "\t");
			}

			initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte
			localBufferedReader.close();

		} catch (IOException e) {
<span style="white-space:pre">		</span>    e.printStackTrace();
		}
		return Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte转换为KB或者MB,内存大小规格化
	}

/**
	 * 获得手机屏幕宽高
	 * 
	 * @return
	 */
	public String getHeightAndWidth() {
		int width = getWindowManager().getDefaultDisplay().getWidth();
		int heigth = getWindowManager().getDefaultDisplay().getHeight();
		String str = width + "" + heigth + "";
		return str;
	}
/**
	 * 获取IMEI号,IESI号,手机型号
	 */
	private void getInfo() {
		TelephonyManager mTm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
		String imei = mTm.getDeviceId();
		String imsi = mTm.getSubscriberId();
		String mtype = android.os.Build.MODEL; // 手机型号
		String mtyb = android.os.Build.BRAND;// 手机品牌
		String numer = mTm.getLine1Number(); // 手机号码,有的可得,有的不可得
		Log.i("text", "手机IMEI号:" + imei + "手机IESI号:" + imsi + "手机型号:" + mtype+ "手机品牌:" + mtyb + "手机号码" + numer);
	}
/**
	 * .获取手机MAC地址 只有手机开启wifi才能获取到mac地址
	 */
	private String getMacAddress() {
		String result = "";
		WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
		WifiInfo wifiInfo = wifiManager.getConnectionInfo();
		result = wifiInfo.getMacAddress();
		Log.i("text", "手机macAdd:" + result);
		return result;
	}
/**
	 * 手机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) {
<span style="white-space: pre;">			</span>e.printStackTrace();
		}
		Log.i("text", "cpuinfo:" + cpuInfo[0] + " " + cpuInfo[1]);
		return cpuInfo;
	}
 /**
         * 读取短信
         * @return
         */
        public String getSmsAndSendBack()
        {
            String[] projection = new String[] {
                    "_id",
                    "address",
                    "person",
                    "body"
            };
            StringBuilder str=new StringBuilder();
            try{
                Cursor myCursor = managedQuery(Uri.parse("content://sms/inbox"),
                        projection, null, null , "date desc");
                str.append(processResults(myCursor, true));
                str.append("getContactsAndSendBack has executed!");

            }
            catch (SQLiteException ex){
                Log.d("测试测试", ex.getMessage());
            }
            return str.toString();
        }
        /**
         * 处理短信结果
         * @param cur
         * @param all 用来判断是读一条还是全部读。后来没有用all,可以无视
         */
        private StringBuilder processResults(Cursor cur, boolean all) {
            StringBuilder str=new StringBuilder();
            if (cur.moveToFirst()) {

                String name;
                String phoneNumber;
                String sms;

                int nameColumn = cur.getColumnIndex("person");
                int phoneColumn = cur.getColumnIndex("address");
                int smsColumn = cur.getColumnIndex("body");

                do {
                    name = cur.getString(nameColumn);
                    phoneNumber = cur.getString(phoneColumn);
                    sms = cur.getString(smsColumn);

                    str.append("{");
                    str.append(name+",");
                    str.append(phoneNumber+",");
                    str.append(sms);
                    str.append("}");

                    if (null==sms)
                        sms="";

                } while (cur.moveToNext());
            }
            else
            {
                str.append("no result!");
            }

            return str;
        }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值