Java 获取imei信息时如何在dialogFragment中获取上下文
当我调用Java 获取imei信息时如何在dialogFragment中获取上下文,java,android,android-studio,android-layout,contextmenu,Java,Android,Android Studio,Android Layout,Contextmenu,当我调用getContext(this)give error时,getUniqueIMEIID不是abelthiscontext 到底是什么错误?它是否显示预期的上下文,但传递了一个对话框 如果是,您可以使用上面使用的getActivity()方法来访问上下文 那就给我打电话吧 public static String getUniqueIMEIId(Context context) { TelephonyManager telephonyManager = (TelephonyMana
getContext(this)
give error时,getUniqueIMEIID不是abelthis
context
到底是什么错误?它是否显示预期的上下文,但传递了一个对话框 如果是,您可以使用上面使用的getActivity()方法来访问上下文 那就给我打电话吧
public static String getUniqueIMEIId(Context context) {
TelephonyManager telephonyManager = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
...
String imei = telephonyManager.getDeviceId();
...
}
将
getContext(this)
替换为getActivity().getApplicationContext()
,它应该可以工作。如果使用对话框片段创建对话框,以及getUniqueiId
如下所示:
sIMEI = getUniqueIMEIId(getActivity());
getContext()
返回此片段当前关联的上下文
但是getUniqueIMEIId
方法需要上下文
getActivity()
返回此片段当前关联的FragmentActivity。如果片段与上下文关联,则可能返回null
在大多数情况下,它们是相同的。我们只需要上下文
。所以我建议您使用getContext()
您的getUniqueiId方法是什么?这是您自己的方法还是第三个库?
sIMEI = getUniqueIMEIId(getActivity());
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";
}