Android 获取设备各种信息以及其它
来源:互联网 发布:眼睛整容知乎 编辑:程序博客网 时间:2024/05/19 23:55
做手机开发,想必都希望获取手机号码吧,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>
Android获取手机卡相关信息
<!-- 联网权限 -->
<uses-permission
android:name="android.permission.INTERNET" />
<!-- 获取机型信息权限 -->
<uses-permission
android:name="android.permission.READ_PHONE_STATE" />
<!-- 获取短信发送权限 -->
<uses-permission
android:name="android.permission.SEND_SMS" />
package com.mc;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;
public class TelManager extends Activity {
TextView textView01 = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView01 = (TextView) this.findViewById(R.id.textView01);
// getPhoneNumber();
fetch_status();
System.out.println("-------------------onCreate");
}
public void getPhoneNumber() {
// 获取手机号、手机串号信息
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String tel = tm.getLine1Number();
textView01.setText("手机串号:" + imei + "/n" + "手机号:" + tel + "/n");
}
public void fetch_status() {
TelephonyManager tm = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);//
String str = "";
str += "DeviceId(IMEI) = " + tm.getDeviceId() + "/n";
str += "DeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion()
+ "/n";
str += "Line1Number = " + tm.getLine1Number() + "/n";
str += "NetworkCountryIso = " + tm.getNetworkCountryIso() + "/n";
str += "NetworkOperator = " + tm.getNetworkOperator() + "/n";
str += "NetworkOperatorName = " + tm.getNetworkOperatorName() + "/n";
str += "NetworkType = " + tm.getNetworkType() + "/n";
str += "honeType = " + tm.getPhoneType() + "/n";
str += "SimCountryIso = " + tm.getSimCountryIso() + "/n";
str += "SimOperator = " + tm.getSimOperator() + "/n";
str += "SimOperatorName = " + tm.getSimOperatorName() + "/n";
str += "SimSerialNumber = " + tm.getSimSerialNumber() + "/n";
str += "SimState = " + tm.getSimState() + "/n";
str += "SubscriberId(IMSI) = " + tm.getSubscriberId() + "/n";
str += "VoiceMailNumber = " + tm.getVoiceMailNumber() + "/n";
textView01.setText(str);
}
}
在Android中以上机型信息在手机状态Status里
Settings->About Phone->Status
各个栏目的功能介绍如下:
Battery status:电池充电/未充电状态
Battery level:电池剩余电量
Phone number:手机序列号
Network:所处的移动网络
Signal strength:信号度
Network type:网络制式
Service state:所在服务区
Roaming:漫游/未漫游
Data access:共访问的数据大小
IMEI:IMEI码
IMEI SV:IMEI码的版本
IMSI:国际移动用户识别码
Wi-Fi Mac address:G1无线Wi-Fi网络的Mac地址。
Bluetooth address:蓝牙地址
Up time:正常运行时间
Awake Time:手机唤醒时间
android 获取当前手机型号:
Build bd = new Build();
Log.i("info", bd.MODEL+":"+bd.DEVICE+":"+bd.PRODUCT);
手机的品牌:
Build.MODEL android.os.Build.MODEL
【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等) 收藏
众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下
view plaincopy to clipboardprint?
1. PackageManager packageManager = this.getPackageManager();
2. List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
通过以上方法,可以得到手机中安装的所有应用程序,既包括了手动安装的apk包的信息,也包括了系统预装的应用软件的信息,要区分这两类软件可使用以下方法:
a.从packageInfoList获取的packageInfo,再通过packageInfo.applicationInfo获取applicationInfo。
b.判断(applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)的值,该值大于0时,表示获取的应用为系统预装的应用,反之则为手动安装的应用。
大家可以看下代码,说明已经写在注释中。
获取应用的代码:
view plaincopy to clipboardprint?
1. /**
2. * 查询手机内非系统应用
3. * @param context
4. * @return
5. */
6. public static List<PackageInfo> getAllApps(Context context) {
7. List<PackageInfo> apps = new ArrayList<PackageInfo>();
8. PackageManager pManager = context.getPackageManager();
9. //获取手机内所有应用
10. List<PackageInfo> paklist = pManager.getInstalledPackages(0);
11. for (int i = 0; i < paklist.size(); i++) {
12. PackageInfo pak = (PackageInfo) paklist.get(i);
13. //判断是否为非系统预装的应用程序
14. if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
15. // customs applications
16. apps.add(pak);
17. }
18. }
19. return apps;
20. }
获取图片、应用名、包名:
view plaincopy to clipboardprint?
1. PackageManager pManager = MessageSendActivity.this.getPackageManager();
2. List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this);
3.
4. for(int i=0;i<appList.size();i++) {
5. PackageInfo pinfo = appList.get(i);
6. ShareItemInfo shareItem = new ShareItemInfo();
7. //set Icon
8. shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
9. //set Application Name
10. shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
11. //set Package Name
12. shareItem.setPackageName(pinfo.applicationInfo.packageName);
13.
14. }
其中 ShareItemInfo 类是我本地自定义的,各位可以忽略!
另为,有人可能在找 分享应用列表,在此一并说下吧。
获取支持分享的应用的代码:
view plaincopy to clipboardprint?
1. /**
2. * 查询手机内所有支持分享的应用
3. * @param context
4. * @return
5. */
6. public static List<ResolveInfo> getShareApps(Context context){
7. List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
8. Intent intent=new Intent(Intent.ACTION_SEND,null);
9. intent.addCategory(Intent.CATEGORY_DEFAULT);
10. intent.setType("text/plain");
11. PackageManager pManager = context.getPackageManager();
12. mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
13.
14. return mApps;
15. }
由于该方法,返回的并不是 PackageInfo 对象。而是 ResolveInfo。因此获取图片、应用名、包名的方法不一样,如下:
view plaincopy to clipboardprint?
1. PackageManager pManager = MessageSendActivity.this.getPackageManager();
2.
3. /*********************查询手机内所有支持分享的应用*********************/
4. List<ResolveInfo> resolveList = Utils.getShareApps(MessageSendActivity.this);
5.
6. for(int i=0;i<resolveList.size();i++) {
7. ResolveInfo resolve = resolveList.get(i);
8. ShareItemInfo shareItem = new ShareItemInfo();
9. //set Icon
10. shareItem.setIcon(resolve.loadIcon(pManager));
11. //set Application Name
12. shareItem.setLabel(resolve.loadLabel(pManager).toString());
13. //set Package Name
14. shareItem.setPackageName(resolve.activityInfo.packageName);
15.
16. }
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ainiyidiandian/archive/2011/04/21/6340111.aspx
- Android 获取设备各种信息以及其它
- Android 获取设备各种信息以及其它
- Android 获取设备各种信息以及其它
- Android 获取设备各种信息以及其它
- Android 获取设备各种信息以及其它
- Android 获取设备各种信息以及其它
- Android获取各种设备信息
- 获取android设备的各种系统信息
- ios 获取设备各种信息
- 获取手机设备各种信息
- iOS---获取设备各种信息
- 获取各种设备号/UIDevice 设备信息
- Android 获取设备分辨率、设备ID、设备CUP、设备位置、MAC地址、以及存储信息
- Android设备信息获取
- android 获取设备信息
- Android 获取设备信息
- android获取设备信息
- 获取android设备信息
- 串口传输XML文件时注意情况
- 派生类到基类转换的可访问性
- C++中的显式构造函数
- 专业的SEO团队是如何组成
- fedora安装rar解压程序 unrar
- Android 获取设备各种信息以及其它
- Linux文件属性
- WINDOWS 自带解压缩命令
- Windows 下使用 PHP Memcache
- 1.3、For 语句
- 打造行业知名博客需要注意些什么?
- Windows Phone 7的多任务解决方案
- Oracle RAC Cache Fusion 机制 详解
- ftp使用mget批量下载