как получить контекст в dialogFragment, когда получить информацию IMEI - PullRequest
1 голос
/ 19 января 2020
@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) выдаю ошибку изображение из android studio

public static String getUniqueIMEIId(Context context) {
    TelephonyManager telephonyManager = (TelephonyManager) 
     context.getSystemService(Context.TELEPHONY_SERVICE);
     ...
     String imei = telephonyManager.getDeviceId();
    ...
}

Ответы [ 3 ]

1 голос
/ 19 января 2020

, если вы используете 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() is.

Возвратите контекст из этого фрагмента в настоящее время связан с, но метод getUniqueIMEIId нуждается в контексте

getActivity() is

Возвращает FragmentActivity, с которым в данный момент связан этот фрагмент. Может возвращать ноль, если фрагмент связан с контекстом, а не

в основной ситуации они одинаковы. и нам нужно только context. поэтому я предложил вам использовать getContext()

0 голосов
/ 19 января 2020

Замените getContext(this) на getActivity().getApplicationContext(), и оно должно работать.

0 голосов
/ 19 января 2020

В чем именно ошибка? Показывает ли это, что Context ожидается, но диалог был передан?

Если да, вы можете просто использовать метод getActivity (), который вы использовали выше, чтобы получить доступ к контексту.

Так что просто вызовите

sIMEI = getUniqueIMEIId(getActivity());
...