@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.layout_reg_dialog, null);
TextView tvIMEI = null;
builder.setView(view)
.setTitle("Activer la Version");
registerKey = view.findViewById(R.id.regiter_key);
tvIMEI = view.findViewById(R.id.tvIMEI);
String sIMEI;
sIMEI = getUniqueIMEIId(getContext(this));
tvIMEI.setText(sIMEI);
return builder.create();
}
getUniqueIMEIID不是abel this
上下文,当我调用getContext(this)
时给出错误image from android studio
public static String getUniqueIMEIId(Context context) {
TelephonyManager telephonyManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
...
String imei = telephonyManager.getDeviceId();
...
}
如果使用dialogFragment
创建对话框,并且getUniqueIMEIId
像这样:
public static String getUniqueIMEIId(Context context) {
try {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
return "";
}
String imei = telephonyManager.getDeviceId();
Log.e("imei", "=" + imei);
if (imei != null && !imei.isEmpty()) {
return imei;
} else {
return android.os.Build.SERIAL;
}
} catch (Exception e) {
e.printStackTrace();
}
return "not_found";
}
getContext()
是。
返回此片段当前与之关联的上下文但是
getUniqueIMEIId
方法需要上下文
getActivity()
是
返回此片段当前与之相关的FragmentActivity。如果该片段与上下文相关联,则可能返回null。
在主要情况下,它们是相同的。而且我们只需要context
。所以我建议您使用getContext()
究竟是什么错误?是否表明希望使用上下文但已通过对话框?
如果是,您可以只使用上面使用的getActivity()方法来访问上下文。
所以打电话
sIMEI = getUniqueIMEIId(getActivity());
用getContext(this)
替换getActivity().getApplicationContext()
,它应该可以工作。