当前位置: 首页 > 知识库问答 >
问题:

尝试在空对象引用上调用虚拟方法intandroid.telephony.gsm.GsmCellLocation.getCid()

洪和平
2023-03-14

我面临着这个错误:

E/AndroidRuntime: FATAL EXCEPTION: main                                                          
Process: com.kotak.pck.jaimaasaraswati, PID: 8321
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kotak.pck.jaimaasaraswati/com.kotak.pck.jaimaasaraswati.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.telephony.gsm.GsmCellLocation.getCid()' on a null object reference

主要活动:

import android.content.Context;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textGsmCellLocation = (TextView) findViewById(R.id.gsmcelllocation);
        TextView textCID = (TextView) findViewById(R.id.cid);
        TextView textLAC = (TextView) findViewById(R.id.lac);

        //retrieve a reference to an instance of TelephonyManager
        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        GsmCellLocation cellLocation = new GsmCellLocation();
        cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();

        int cid = cellLocation.getCid();
        int lac = cellLocation.getLac();
        textGsmCellLocation.setText("GSM Cell Location: " + cellLocation.toString());
        textCID.setText("GSM Cell id: " + String.valueOf(cid));
        textLAC.setText("GSM Location area code: " + String.valueOf(lac));
    }
}

谢谢你的帮助。

共有1个答案

伊羽
2023-03-14

根据文档,getCellLocation()将返回

设备的当前位置,如果不可用,则为空。

它还需要以下权限。

Manifest.permission.ACCESS_FINE_LOCATION

另外,可能是因为LTE导致了问题。根据文件,

如果设备中只有一个无线电,并且该无线电具有LTE连接,则此方法将返回null。

此外,您需要使用getAllCellInfo(),因为另一个在API级别26中不建议使用。

 类似资料:
  • 问题内容: 我收到以下错误 尝试在空对象引用上调用虚拟方法’void android.widget.StackView.setAdapter(android.widget.Adapter)’ 在这条线上 完整的片段 EventsFragment.java 是 Stack_Adapter.java Stack_Items 问题答案: 您正在执行: 你是。返回。 你为什么用? 在哪里?您应该从正确的x

  • 我的应用程序有问题,想解决它,但我无法访问解决方案,请帮帮我,,

  • 我正在尝试实现一个外部色轮,它应该出现在的片段一直在崩溃我的应用程序。我想我明白为什么会发生这种情况,但是在尝试修复它大约6个小时后,我就要放弃了。我知道之前有人问过这个问题,但是我无法为我的特定问题导出一个修复程序。下面是我的代码: 这是Logcat错误: 如果有人能帮我解决这个问题,那就太好了。提前谢谢^^ 编辑:这是我的XML,按要求:

  • 问题内容: 我尝试使用片段来打开数据库,但是,当我单击按钮开始搜索时,程序意外终止,并显示如下错误: 主片段: DBManager类: 顺便说一句,我在MainAcitivity中使用了有关DBManager的代码,并且成功了。将代码复制到上面的片段后,它失败了,该怎么办? 问题答案: 之前和之后你都做不到。 因为,您正在执行片段实例化时。该方法将始终返回null。另外,尽量不要将参考文献保留在您

  • 问题内容: 我正在尝试将播放器的名称保存为共享的首选项,并通过再次以共享的首选项获取它的名称来使其显示在另一个活动中,但是我的应用程序崩溃了。 致命异常:主要 代码: 播放器 PlayGame.java PlayerName.java 问题答案: 您的应用在以下位置崩溃: 因为。 您忘记在PlayGame活动中进行初始化。

  • 我尝试使用一个片段来打开一个数据库,但是,当我单击按钮开始搜索时,程序意外地终止,它显示这样的错误: 主要片段: 类DBManager: 顺便说一句,我在MainActivity中使用了关于DBManager的代码,它成功了。在我将代码复制到上面的片段后,它失败了。我该怎么办?