【问题标题】:Android Studio - Java - TelephonyManager - error: non-static method [duplicate]Android Studio - Java - TelephonyManager - 错误:非静态方法 [重复]
【发布时间】:2020-06-08 01:51:00
【问题描述】:

我该如何解决这个问题? 我没有看到 System.out.println 我想看看 in 的 System.out.println 。 我在 logcat 中看到错误。 我的代码在外部 java 类中。

我的代码在这里:

package com.example.test;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class bilgiCek extends AppCompatActivity {
    public static void telefonBilgi(){
        TelephonyManager bilgiler = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); // Error is here.

        String simUlke = bilgiler.getSimCountryIso();
        String netUlke = bilgiler.getNetworkCountryIso();
        String imei = bilgiler.getImei();
        String simNo = bilgiler.getSimSerialNumber();
        String sesMail = bilgiler.getVoiceMailNumber();
        System.out.println("İmei Numarası" + imei);
    }

}

错误输出在这里:

> Task :app:compileDebugJavaWithJavac FAILED
C:\Users\90505\AndroidStudioProjects\test\app\src\main\java\com\example\test\smsOkuma.java:16: error: non-static method getSystemService(String) cannot be referenced from a static context
        TelephonyManager bilgiler = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
                                                       ^
1 error

FAILURE: Build failed with an exception

【问题讨论】:

  • 将此添加为评论。
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。

标签: java android android-studio telephonymanager


【解决方案1】:

添加非静态上下文作为参数,如下所示

  public static void telefonBilgi(Context context){
    TelephonyManager bilgiler = (TelephonyManager) context.getSystemService(TELEPHONY_SERVICE);
    String simUlke = bilgiler.getSimCountryIso();
    String netUlke = bilgiler.getNetworkCountryIso();
    String imei = bilgiler.getImei();
    String simNo = bilgiler.getSimSerialNumber();
    String sesMail = bilgiler.getVoiceMailNumber();
    System.out.println("İmei Numarası" + imei);
}

这可能有效

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2015-03-25
    • 2022-01-22
    相关资源
    最近更新 更多