android - 无法从 Util 类型对非静态方法 getIMEI() 进行静态引用

标签 android exception imei

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String test =  Util.imei();
}


import android.content.Context;
import android.telephony.TelephonyManager;

public class Util{
    Context context;

    public Util(Context context) {
        this.context = context;
    }

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

出现错误“无法从 Util 类型对非静态方法 imei() 进行静态引用”。 如果我将行更改为:

public static String imei() {
    ...
    static Context context;

我收到一个错误并使应用程序崩溃。("E/AndroidRuntime(629): Caused by:java.lang.NullPointerException")

最佳答案

两种写法:

第一 非静态

public class Util {
    Context context;

    public Util(Context context) {
        this.context = context;
    }

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

然后在onCreate方法中

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Util u = new Util(this);
    String test =  u.imei();
}

第二 静态

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

然后在onCreate方法中

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String test =  Util.imei(this);
}

关于android - 无法从 Util 类型对非静态方法 getIMEI() 进行静态引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626228/

相关文章:

java - 如何验证用户的输入,并在无效时再次读入他们的输入,使用 try-catch?

android - 我的应用违反了 Android 广告 ID 政策

android - 在 android 中使用 Telephony Manager 查找 IMEI 号码

android - 在android中设置NavigationDrawer项目的OnClick

android - Android屏幕中的红色条纹像条纹

java - 为什么这段代码中永远不会抛出 IOException

ios - 以编程方式获取 iOS7 的 IMEI

android - 在android中从一个 fragment 切换到另一个 fragment 时如何存储 fragment 数据?

android - 它与 emdebian 和 android 二进制兼容吗?

android - 消费者关闭输入 channel 或发生错误。事件=0x8