基本的 Google Maps Android,2 个与 PERMISSIONS 相关的小错误

Posted

技术标签:

【中文标题】基本的 Google Maps Android,2 个与 PERMISSIONS 相关的小错误【英文标题】:Basic Google Maps Android, 2 small errors with PERMISSIONS 【发布时间】:2017-03-15 04:33:48 【问题描述】:

尊敬的社区,我正在学习 android 中的谷歌地图集成,并且已经了解了很多东西,有权限,以及使用最新的 GoogleApiAvailability,但仍然面临 2 个错误 我无法解决。我在public boolean ServicesOK() 方法中得到Cannot Resolve Method isUserRecoverableError(int)non-static method getErrorDialog cannot be referenced from a static context in the end of code。 以下是 Java 代码:(如果需要其他任何内容,请告诉我,以便我可以正确使用 Android Google Maps 概念进行指导:))

package com.example.testmap;

import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback 

    private static final int ERROR_DIALOG_REQUEST = 9901;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        if(ServicesOK()) 
            Toast.makeText(this, "Can't connect to mapping services", Toast.LENGTH_SHORT).show();

            // Obtain the SupportMapFragment and get notified when the map is ready to be used.
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);
        

    @Override
    public void onMapReady(GoogleMap googleMap) 
        GoogleMap mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    

    public boolean ServicesOK()
        GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
        int isAvailable = googleApiAvailability.isGooglePlayServicesAvailable(this);

        if(isAvailable== ConnectionResult.SUCCESS)
            return  true;
        
        else if(GoogleApiAvailability.isUserRecoverableError(isAvailable))
            Dialog dialog;
            dialog= GoogleApiAvailability.getErrorDialog(isAvailable, this, ERROR_DIALOG_REQUEST);
            dialog.show();
        
        else
            Toast.makeText(this, "Can't connect to mapping services", Toast.LENGTH_SHORT).show();
        
        return false;
    

【问题讨论】:

【参考方案1】:

isUserRecoverableError 方法来自GooglePlayServicesUtil 而不是来自GoogleApiAvailability。但正如您在文档中看到的那样,此方法已被弃用,您现在应该改用 GoogleApiAvailability.getInstance().isUserResolvableError()

对于第二个错误,您尝试访问getErrorDialog,但这不是静态方法。你应该改用GoogleApiAvailability.getInstance().getErrorDialog

【讨论】:

.getInstance() 对我来说就像一个魅力。非常感谢您清除我的概念先生:)

以上是关于基本的 Google Maps Android,2 个与 PERMISSIONS 相关的小错误的主要内容,如果未能解决你的问题,请参考以下文章

import com.google.android.maps.geopoint 无法解析

在 HAXM x86 模拟器上安装 Google 设置(Google Maps SDK)

使用 google play-services-maps 11.6.2 的 Android Studio Gradle 同步错误

无法通过 gradle 导入 com.google.maps.android:android-maps-utils

Google Maps V2 在 android 2.2 上显示空白屏幕

Android studio v0.3.2, gradle, google maps v2.0 找不到类“com.google.android.gms.maps.MapFragment