私のAndroidバージョンはMarshmallow 6.
プログラムでAndroid> 6のimei番号を検索/取得する方法。
注:AndroidManifest.xmlファイル内にREAD_PHONE_STATE権限を追加しました。
<uses-permission Android:name="Android.permission.READ_PHONE_STATE"></uses-permission>
そしてMainActivityの内部
TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceid = manager.getDeviceId();
//Device Id is IMEI number
Log.d("msg", "Device id " + deviceid);
私のAndroidバージョンはMarshmallow 6.
注:ランタイム権限が必要です
AndroidManifest.xmlファイル内にREAD_PHONE_STATE権限を追加しました。
<uses-permission Android:name="Android.permission.READ_PHONE_STATE"></uses-permission>
mainActivityで:
private static final int PERMISSIONS_REQUEST_READ_PHONE_STATE = 999;
private TelephonyManager mTelephonyManager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE},
PERMISSIONS_REQUEST_READ_PHONE_STATE);
} else {
getDeviceImei();
}
....
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_READ_PHONE_STATE
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getDeviceImei();
}
}
private void getDeviceImei() {
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceid = mTelephonyManager.getDeviceId();
Log.d("msg", "DeviceImei " + deviceid);
}
また、getDeviceId()メソッドはAPIレベル26で非推奨になりました。したがって、さらに、imeiの詳細をフェッチするにはgetImei()またはgetAllCellInfo()を使用する必要があります。
許可が必要:READ_PHONE_STATE
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
/**
* Gets the device unique id called IMEI. Sometimes, this returns 00000000000000000 for the
* rooted devices.
**/
public static String getDeviceImei(Context ctx) {
TelephonyManager telephonyManager = (TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
Log.i(Tag, "Return Sim count in device : "+manager.getPhoneCount());
Log.i(Tag, "Defualt device ID: "+manager.getDeviceId());
Log.i(Tag, "First Sim IMEI: "+manager.getDeviceId(0));
Log.i(Tag, "Secand Sim IMEI "+manager.getDeviceId(1));
return telephonyManager.getDeviceId();
}
デバイスIDが使用できない場合はnullを返します。