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

requestLocationUpdates上的Android

容鸿畴
2023-03-14

我在java.lang.AbstractMethoderRor:抽象方法“void android.location.locationListener.onProviderDisabled(java.lang.string)

当我调用locationmanager.requestLocationUpdates()时。我看到另一个帖子,答案是重写一些方法,即。

 @Override
public void onProviderDisabled(@NonNull String provider) {}
public class MainActivity extends AppCompatActivity {
    LocationManager locationManager;
    LocationListener  locationListener = location -> Toast.makeText(MainActivity.this,location.getLatitude()+" "+location.getLongitude(),Toast.LENGTH_LONG).show();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        findViewById(R.id.button).setOnClickListener(v -> showLoc());

        findViewById(R.id.button2).setOnClickListener(v -> locationManager.removeUpdates(locationListener));

    }
    private void showLoc(){
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 13);
            return;
        }
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 2, locationListener);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == 13) {
            for (int i = 0; i < permissions.length; i++) {
                if (permissions[i].equals(Manifest.permission.ACCESS_FINE_LOCATION) && grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                    System.out.println("DEBUG Request Permissions ");
                    showLoc();
                }
            }
        }
    }
}

异常在LocationManager.RequestLocationUpdates处引发,与库版本有关。

最后,这是我的建筑。gradle(应用程序)

plugins {
    id 'com.android.application'
}

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 25
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

共有1个答案

梁磊
2023-03-14

重写代码中的方法

...

override fun onProviderDisabled(provider: String) {}
override fun onProviderEnabled(provider: String) {}
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {}
...
 类似资料:
  • 我正在构建一个应用程序,即使应用程序在后台,也需要保持位置跟踪。基本上,我正在使用播放服务的GoogleApiClient和LocationServices。FusedLocationApi.request位置更新方法来调用IntentService。 下面的代码是我如何在活动的后台触发位置更新: 效果很好 但是,当用户(通过任务管理器)终止应用程序时,我想停止此IntentService(称为L

  • 问题内容: 根据: Android 2.0应该支持HTML5视频元素。我无法使用MotorolaDroid使它正常工作,也无法在其中的任何HTML5视频示例页面上成功查看视频。由于目前不支持QuickTime或Flash,这是我想到的将mp4视频嵌入网页中的唯一其他方法。有人有运气吗? 问题答案: 我已经对此进行了一些试验,从我可以告诉你的需要三件事: 调用视频时,不得使用 type 属性。 您必

  • 问题内容: 这听起来像是一个愚蠢的问题,但Google并没有帮助我。 是否有适用于Android的JRE?如果是,是哪个版本?是否缺少任何主要功能? 如果不是,那是否意味着需要重新编译所有Java应用程序才能使Dalvik在Android上运行? 更新; Android是否会提供JRE? 问题答案: 不,那里没有。Google确实为Android创建了完全不同的运行时,其中基类完全不同(尽管 兼容

  • 问题内容: 在Android编程中,Context类的确切含义是什么? 问题答案: 简单地说: 顾名思义,它是应用程序/对象当前状态的上下文。它使新创建的对象了解正在发生的事情。通常,您调用它来获取有关程序另一部分(活动和程序包/应用程序)的信息。 您可以通过调用获取上下文,,或(当在扩展,从一类Context,如应用程序,活动,服务和IntentService类)。 上下文的典型用法: 创建新对

  • 问题内容: 我正在使用计算器。我注意到,在默认的android calc中,您可以水平滚动textview。我查阅了文档,发现了该属性,但是将其添加到textview后,我仍然无法进行水平滚动,文档中没有关于它的更多信息,使我认为仅添加attr就足够了。这是计算器的文本视图: 当字符超过textview宽度时,将修剪字符串,并在末尾显示…。我究竟做错了什么? 问题答案: 这样可以使textview

  • 因此,我使用createQuery连接到我的symfony数据库,其原则如下 在url:http://localhost/symfony/web/app_dev.php/json,现在我要在Android(eclipse Android)上导出结果(jsonreponse),并在那里显示响应!我怎么能那么做? 我在google上找到了这段关于在Android上显示json代码的代码,但我不知道如何