android获取包版本,Android获取应用名称、版本号、应用包名称,移动设备ID、MAC地址、基站信息和手机型号等详细信...

创建一个android应用(AndroidTest),所需权限如下(AndroidManifest.xml文件):

接下来是MainActivity.java文件:

package com.example.androidtest;

import org.json.JSONException;

import org.json.JSONObject;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.provider.Settings.Secure;

import android.app.Activity;

import android.content.Context;

import android.content.pm.ApplicationInfo;

import android.content.pm.PackageManager;

import android.content.pm.PackageManager.NameNotFoundException;

import android.telephony.TelephonyManager;

import android.telephony.cdma.CdmaCellLocation;

import android.telephony.gsm.GsmCellLocation;

import android.view.Menu;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

getInfo();

}

public void getInfo() {

try {

StringBuilder strLog = new StringBuilder();

Context ctx = this.getApplicationContext();

/**

* 1.获取应用信息

*

* 要想获取更多应用相关信息请查阅PackageManager、ApplicationInfo资料

*/

// 获取应用名称

String appName = getAppName(ctx);

strLog.append("应用名称:" + appName + "\r\n");

// 获取应用包名称

String packName = getPackName(ctx);

strLog.append("应用包名称:" + packName + "\r\n");

// 获取应用版本

String verName = getVerName(ctx, packName);

strLog.append("应用版本名称:" + verName + "\r\n");

// 获取应用版本号

int verCode = getVerCode(ctx, packName);

strLog.append("应用版本号:" + verCode + "\r\n");

/**

* 2.获取设备信息

*/

// 获取手机型号

String model = getPhoneModel();

strLog.append("手机型号:" + model + "\r\n");

// 获取手机号码

String phoneNum = getLineNum(ctx);

strLog.append("手机号码:" + phoneNum + "\r\n");

// 获取移动用户标志,IMSI

String imsi = getSubscriberId(ctx);

strLog.append("IMSI:" + imsi + "\r\n");

// 获取设备ID

String devID = getDeviceID(ctx);

strLog.append("设备ID:" + devID + "\r\n");

// 获取SIM卡号

String sim = getSim(ctx);

strLog.append("SIM卡号:" + sim + "\r\n");

// 获取基站信息

SCell cellInfo = getCellInfo(ctx);

String strCell = "";

if (cellInfo != null) {

strCell = cellInfo.toJSON().toString();

}

strLog.append("基站信息:" + strCell + "\r\n");

// 获取Mac地址

String mac = getMac(ctx);

strLog.append("Mac地址:" + mac + "\r\n");

System.out.println(strLog.toString());

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 获取应用包名称

*/

public String getPackName(Context ctx) {

return ctx.getPackageName();

}

/**

* 获取应用版本名称

*/

public String getVerName(Context ctx, String packName) {

String verName = "";

try {

verName = ctx.getPackageManager().getPackageInfo(packName, 0).versionName;

} catch (NameNotFoundException e) {

}

return verName;

}

/**

* 获取应用版本号

*/

public int getVerCode(Context context, String packName) {

int versionCode = 0;

try {

versionCode = context.getPackageManager().getPackageInfo(packName,

0).versionCode;

} catch (NameNotFoundException e) {

}

return versionCode;

}

/**

* 获取应用名称

*/

public String getAppName(Context ctx) {

String appName = "";

try {

PackageManager packManager = ctx.getPackageManager();

ApplicationInfo appInfo = ctx.getApplicationInfo();

appName = (String) packManager.getApplicationLabel(appInfo);

} catch (Exception e) {

}

return appName;

}

/**

* 获取手机型号

*

* android.os.Build提供以下信息:

* String BOARD The name of the underlying board, like "goldfish".

* String BRAND The brand (e.g., carrier) the software is customized for, if any.

* String DEVICE The name of the industrial design.

* String FINGERPRINT A string that uniquely identifies this build.

* String HOST

* String ID Either a changelist number, or a label like "M4-rc20".

* String MODEL The end-user-visible name for the end product.

* String PRODUCT The name of the overall product.

* String TAGS Comma-separated tags describing the build, like "unsigned,debug".

* long TIME

* String TYPE The type of build, like "user" or "eng".

* String USER

*/

public String getPhoneModel() {

return android.os.Build.MODEL;

}

/**

* 获取手机号码,一般获取不到

*

* 用到的权限:

*

*

* 要想获取更多电话、数据、移动网络相关信息请查阅TelephonyManager资料

*/

public String getLineNum(Context ctx) {

String strResult = "";

TelephonyManager telephonyManager = (TelephonyManager) ctx

.getSystemService(Context.TELEPHONY_SERVICE);

if (telephonyManager != null) {

strResult = telephonyManager.getLine1Number();

}

return strResult;

}

/**

* 获取移动用户标志,IMSI

*

* 用到的权限:

*

*/

public String getSubscriberId(Context ctx) {

String strResult = "";

TelephonyManager telephonyManager = (TelephonyManager) ctx

.getSystemService(Context.TELEPHONY_SERVICE);

if (telephonyManager != null) {

strResult = telephonyManager.getSubscriberId();

}

return strResult;

}

/**

* 获取设备ID

*

* 用到的权限:

*

*/

public String getDeviceID(Context ctx) {

String strResult = null;

TelephonyManager telephonyManager = (TelephonyManager) ctx

.getSystemService(Context.TELEPHONY_SERVICE);

if (telephonyManager != null) {

strResult = telephonyManager.getDeviceId();

}

if (strResult == null) {

strResult = Secure.getString(ctx.getContentResolver(),

Secure.ANDROID_ID);

}

return strResult;

}

/**

* 获取SIM卡号

*

* 用到的权限:

*

*/

public String getSim(Context ctx) {

String strResult = "";

TelephonyManager telephonyManager = (TelephonyManager) ctx

.getSystemService(Context.TELEPHONY_SERVICE);

if (telephonyManager != null) {

strResult = telephonyManager.getSimSerialNumber();

}

return strResult;

}

/**

* 获取Wifi Mac地址

*

* 要想获取更多Wifi相关信息请查阅WifiInfo资料

*

* 用到的权限:

*

*/

public String getMac(Context ctx) {

WifiManager wifiManager = (WifiManager) ctx

.getSystemService(Context.WIFI_SERVICE);

if (wifiManager != null) {

WifiInfo wi = wifiManager.getConnectionInfo();

return wi.getMacAddress();

}

return null;

}

/**

* 获取基站信息

*

* 用到的权限:

*

*

*/

public SCell getCellInfo(Context ctx) {

SCell cell = new SCell();

TelephonyManager tm = null;

try {

tm = (TelephonyManager) ctx

.getSystemService(Context.TELEPHONY_SERVICE);

} catch (Exception e) {

return null;

}

// IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。

String IMSI = tm.getSubscriberId();

if (IMSI != null) {

if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {

cell.NETWORK_TYPE = "CHINA MOBILE";

GsmCellLocation location = (GsmCellLocation) tm

.getCellLocation();

if (location == null) {

cell = null;

} else {

String operator = tm.getNetworkOperator();

if (operator.length() > 4) {

int mcc = Integer.parseInt(operator.substring(0, 3));

int mnc = Integer.parseInt(operator.substring(3));

int cid = location.getCid();

int lac = location.getLac();

cell.MCC = mcc;

cell.MNC = mnc;

cell.LAC = lac;

cell.CID = cid;

} else {

cell = null;

}

}

} else if (IMSI.startsWith("46001")) {

cell.NETWORK_TYPE = "CHINA UNICOM";

GsmCellLocation location = (GsmCellLocation) tm

.getCellLocation();

if (location == null) {

cell = null;

} else {

String operator = tm.getNetworkOperator();

if (operator.length() > 4) {

int mcc = Integer.parseInt(operator.substring(0, 3));

int mnc = Integer.parseInt(operator.substring(3));

int cid = location.getCid();

int lac = location.getLac();

cell.MCC = mcc;

cell.MNC = mnc;

cell.LAC = lac;

cell.CID = cid;

} else {

cell = null;

}

}

} else if (IMSI.startsWith("46003")) {

cell.NETWORK_TYPE = "CHINA TELECOM";

CdmaCellLocation location = (CdmaCellLocation) tm

.getCellLocation();

if (location == null) {

cell = null;

} else {

String operator = tm.getNetworkOperator();

if (operator.length() > 4) {

int mcc = Integer.parseInt(operator.substring(0, 3));

int mnc = Integer.parseInt(operator.substring(3));

int cid = location.getBaseStationId();

int lac = location.getNetworkId();

cell.MCC = mcc;

cell.MNC = mnc;

cell.LAC = lac;

cell.CID = cid;

} else {

cell = null;

}

}

} else {

// cell.NETWORK_TYPE = "UNDENTIFIED";

cell = null;

}

} else {

cell = null;

}

return cell;

}

/**

* 基站信息

*/

class SCell {

public String NETWORK_TYPE;

public int MCC;

public int MNC;

public int LAC;

public int CID;

public JSONObject toJSON() throws JSONException {

JSONObject json = new JSONObject();

json.put("network_type", NETWORK_TYPE);

json.put("mcc", MCC);

json.put("MNC", MNC);

json.put("LAC", LAC);

json.put("CID", CID);

return json;

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值