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

onStatusChanged和onProviderDisabled上的Android LocationListener、AbstractMethodError

百里俭
2023-03-14

我有一个带有按钮的简单活动,它使用LocationManager尝试获取当前位置:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button buttonGps = findViewById(R.id.buttonGps);

    final Context activity = this;

    buttonGps.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!checkForPhonePermission()) {
                return;
            }

            LocationManager locationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE);

            locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, new LocationListener() {
                @Override
                public void onLocationChanged(@NonNull Location location) {
                    Log.d(TAG, location.getLatitude() + "");
                }
            }, Looper.myLooper());
        }
    });
}
java.lang.AbstractMethodError: abstract method "void android.location.LocationListener.onStatusChanged(java.lang.String, int, android.os.Bundle)"
java.lang.AbstractMethodError: abstract method "void android.location.LocationListener.onProviderDisabled(java.lang.String)"

这种行为有什么原因吗?

共有1个答案

施永宁
2023-03-14

只需在代码末尾添加以下三个函数:

@Override
public void onProviderEnabled(@NonNull String provider) {

}

@Override
public void onProviderDisabled(@NonNull String provider) {

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    
}

并编写您希望在状态更改时执行的代码

 类似资料:
  • 问题内容: 我在Android应用中运行了以下代码 在Android 5.0(Lollipop)中,它 没有 引发任何整数异常。但是在Android 4.4.x (KitKat)和更低版本中,它抛出: NumberFormatException:无效的Int:“ +91” Android版本如何造成这种差异? 问题答案: 在此提交中添加了对显式的支持: 从开始包含在内。如果您已获取Git存储库,则

  • 问题内容: 如何在Windows上正确安装virtualenv? 我从这里下载virtualenv1.9.1并尝试使用以下命令安装它: 但它没有出现在MyPythonPath / Scripts中 我尝试以相同的方式安装virutalenvwrapper- win 并正确安装。但是我不能使用它,因为我没有virtualenv python.exe:无法打开文件“ MyPythonPath \ Sc

  • 问题内容: 在我的Ubuntu 14.04上,我按照Tensorflow安装说明中的说明使用“ pip”安装了tensorflow,并通过将其导入python来确保它可以正常工作。 然后,我安装了Anaconda,并通过向其添加以下行来更改了.bashrc文件: 但是由于此更改,现在它会查找上面的PATH,其中不包含张量流。现在我无法在我的python代码中导入tensorflow。 扩展$ PA

  • 我试图用和构建一个简单的应用程序。 Ive用express Generator生成我的应用程序的skel: 然后我编辑了package.json文件以包含socket.io: 在运行时,so socket.io正在初始化,但似乎没有io.sockets模块。 我运行查看该对象,我得到: 那么sockets方法在哪里呢?无处可去。但是你看,有一个套接字功能: 以防万一,我将发布我的,但我的代码似乎没

  • 我想处理使用者从队列中获得的不成功消息,并将它们重新排队。 想象一下我有这样的情况: 我想请求它,但要将它发送回队列的开头: 我用我的应用程序上的几行代码解决了问题,但我想知道是否存在更好的解决方案,也许直接使用RabbitMQ的某些功能。

  • 我在kivy上做了一个简单的OSC测试,看起来我在Android手机上运行它们时遇到了问题。为了更好地理解Kivy和OSC是如何工作的,我做了一个小测试,应该可以显示应用程序和另一台计算机之间的通信。特别是服务器 当我在我的电脑上测试它时,它以两种方式工作,所以从另一个终端,我可以发送一条消息,Kivy应用程序会做出反应: 发送此信息会让Kivy更改按钮上的标签。此外,在另一个终端上设置监听端口(