Android(安卓)获取设备各种信息以及其它
做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能。
TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
numberText.setText(tm.getLine1Number());
红色标记函数能够获取本机号码。
除此之外,TelephonyManager类还提供了多种获取手机信息的函数,入imei、imsi等。、
看代码:
package com.pingan.innovation;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;
public class PhoneInfo extends Activity {
private TextView numberText;
private TextView imeiText;
private TextView onText;
private TextView snText;
private TextView imsiText;
private TextView ssText;
private TextView ntText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
numberText = (TextView) findViewById(R.id.numberText);
imeiText = (TextView) findViewById(R.id.imeiText);
onText = (TextView) findViewById(R.id.onText);
snText = (TextView) findViewById(R.id.snText);
imsiText = (TextView) findViewById(R.id.imsiText);
ssText = (TextView) findViewById(R.id.ssText);
ntText = (TextView) findViewById(R.id.ntText);
TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
numberText.setText(tm.getLine1Number());
imeiText.setText(tm.getDeviceId());
onText.setText(tm.getNetworkOperatorName());
snText.setText(tm.getSimSerialNumber());
imsiText.setText(tm.getSubscriberId());
ssText.setText(tm.getNetworkCountryIso());
ntText.setText(tm.getNetworkOperator());
}
}
以上几个函数分别获取的是:
手机号码、imei、运营商名称、sim卡序列号、IMSI、sim卡所在国家、运营商编号。
对了,AndroidManifest.xml里面还需加上:<uses-permission android:name="android.permission.READ_PHONE_STATE" />
这样才能有对手机信息的访问权限。
不过,经过在HTC Hero真机上的测试,发现获取不到手机号码。
在Ophone系统的多普达A6188上测试,同样也取不到手机号码。
Build bd = new Build();
String model = bd.MODEL;
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
StringBuilder sb = new StringBuilder();
sb.append("/nDeviceId(IMEI) = " + tm.getDeviceId());
sb.append("/nDeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion());
sb.append("/nLine1Number = " + tm.getLine1Number());
sb.append("/nNetworkCountryIso = " + tm.getNetworkCountryIso());
sb.append("/nNetworkOperator = " + tm.getNetworkOperator());
sb.append("/nNetworkOperatorName = " + tm.getNetworkOperatorName());
sb.append("/nNetworkType = " + tm.getNetworkType());
sb.append("/nPhoneType = " + tm.getPhoneType());
sb.append("/nSimCountryIso = " + tm.getSimCountryIso());
sb.append("/nSimOperator = " + tm.getSimOperator());
sb.append("/nSimOperatorName = " + tm.getSimOperatorName());
sb.append("/nSimSerialNumber = " + tm.getSimSerialNumber());
sb.append("/nSimState = " + tm.getSimState());
sb.append("/nSubscriberId(IMSI) = " + tm.getSubscriberId());
sb.append("/nVoiceMailNumber = " + tm.getVoiceMailNumber());
Log.v("DeviceInfo", sb.toString());
Log.v("Model", model);
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(
Intent.ACTION_BATTERY_CHANGED));//获得电量
BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {//广播出电量值
@Override
public void onReceive(Context arg0, Intent intent) {
batterylevel = intent.getIntExtra("level", 0);
updateBatteryStatsBylevel(batterylevel);
TitleInfo.batterylevel = batterylevel;
Log.i("batterylevel_value", String.valueOf(batterylevel));
}
};
package maximyudin.BatteryLevel;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;
public class BatteryLevel extends Activity {
private TextView tvBatteryLevel;
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
int level = intent.getIntExtra("level", 0);
int scale = intent.getIntExtra("scale", 100);
tvBatteryLevel.setText("Battery level: "
+ String.valueOf(level * 100 / scale) + "%");
}
}
};
@Override
public void onResume() {
super.onResume();
registerReceiver(mBatteryInfoReceiver, new IntentFilter(
Intent.ACTION_BATTERY_CHANGED));
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(mBatteryInfoReceiver);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvBatteryLevel = (TextView) findViewById(R.id.tvBatteryLevel);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tvBatteryLevel" android:text="Battery level:"/>
</LinearLayout>
更多相关文章
- Mac下获取android studio keystore的SHA1和MD5
- view measure详解
- Android核心基础(五)
- Android(安卓)获取手机信息
- Android获取通话状态
- Android之获取手机信息
- Android获取apk的版本及包名等信息
- Android获取程序路径 (/data/data/appname)
- Android处理POST请求、Android用SAX解析XML