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不是abel
this
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";
}