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