Android谷歌地图v2 API突然停止工作?

时间:2015-06-23 21:05:17

标签: android google-maps android-maps-v2

更新

我和我的同事N6一起尝试过。有效。所以我拿出一个新的开箱即用的N6。我安装Play服务.. IT FAILS。

我整天都在这。它昨天整天都很完美。所有我记得的是gradle让我交换网络(安全)下载的东西。大约一个小时后我去修建.. nada。恢复到最后一晚的检查,纳达。它可以在我的个人电话上运行但不是nexus 6.哎呀我甚至将####电话刷到5.1 nexus图像。纳达。清除所有缓存的gradle文件,将最小的SDK编号弄清楚。没有。哦,谷歌用了几个小时。

我建立,运行没有问题。使用我的地图CRASH导航到活动。虽然只是关于nexus,但我的笔记4没有崩溃。问题不是空指针,问题是

06-23 15:01:21.414  19516-19516/? W/ResourcesManager﹕ Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
06-23 15:01:21.414  19516-19516/? W/ResourcesManager﹕ Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.

全部

06-23 15:01:14.982  19516-19535/xxxx.xxxx.xxxx.mobility I/Adreno﹕ EGLInit: QTI Build: 01/29/15, 1bccc5d, I0ba6dce82d
06-23 15:01:14.990  19516-19535/xxxx.xxxx.xxxx.mobility I/OpenGLRenderer﹕ Initialized EGL, version 1.4
06-23 15:01:14.997  19516-19535/xxxx.xxxx.xxxx.mobility D/OpenGLRenderer﹕ Enabling debug mode 0
06-23 15:01:16.733  19516-19526/? I/art﹕ Ignoring second debugger -- accepting and dropping
06-23 15:01:21.407  19516-19516/? I/zzy﹕ Making Creator dynamically
06-23 15:01:21.414  19516-19516/? W/ResourcesManager﹕ Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
06-23 15:01:21.414  19516-19516/? W/ResourcesManager﹕ Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
06-23 15:01:21.443  19516-19516/? I/Google Maps Android API﹕ Google Play services client version: 7571000
06-23 15:01:21.452  19516-19516/? I/Google Maps Android API﹕ Google Play services package version: 7574430
06-23 15:01:21.845  19516-19516/? D/AndroidRuntime﹕ Shutting down VM
06-23 15:01:21.846  19516-19516/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: xxxx.xxxx.xxxx.mobility, PID: 19516
java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
at xxxx.xxxx.xxxx.mobility.Map.MapPaneActivity.onMapReady(MapPaneActivity.java:109)
at com.google.android.gms.maps.MapFragment$zza$1.zza(Unknown Source)
at com.google.android.gms.maps.internal.zzm$zza.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.ba.a(SourceFile:82)
at com.google.maps.api.android.lib6.d.fz.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

删除大部分包名称。权限位于顶部。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xcv.qwe.xxxxx.mobility"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="19" />

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>



<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<permission
    android:name="xcv.qwe.xxxxx.mobility.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="xcv.qwe.xxxxx.mobility.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".StartSplashActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/title_activity_start_splash" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="xxxxx"
    <activity
        android:name=".StartSplashActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="@string/title_activity_start_splash" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>


<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />

<receiver
    android:name="xxxxx"
    android:enabled="true" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" >
        </action>
    </intent-filter>
</receiver>
<receiver
    android:name="xxxxxr"
    android:enabled="true" >
</receiver>
<receiver
    android:name="xxxxx"
    android:enabled="true" >
    <intent-filter>
        <action android:name="local.transition.initialize" />
        <action android:name="local.transition.exited_geofence" />
        <action android:name="local.transition.stopped_moving" />
        <action android:name="local.transition.stop_tracking" />
    </intent-filter>
</receiver>
<receiver android:name="xxxxx" >
    <intent-filter>
        <action android:name="android.intent.action.ACTION_BATTERY_LOW" />
        <action android:name="android.intent.action.ACTION_BATTERY_OKAY" />
    </intent-filter>
</receiver>

<service
    android:name="xxxxx"
    android:enabled="true" >
</service>
<service android:name="xxxxx" >
    <intent-filter>
        <action android:name="android.accounts.AccountAuthenticator" />
    </intent-filter>

    <meta-data
        android:name="android.accounts.AccountAuthenticator"
        android:resource="@xml/authenticator" />
</service>
<service
    android:name="xxxxx"
    android:enabled="true"
    android:exported="false" >
</service>
<service
    android:name="xxxxxe"
    android:enabled="true"
    android:exported="false" >
</service>
<service
    android:name="xxxxx"
    android:enabled="true"
    android:exported="false" >
</service>
<service
    android:name="xxxxx"
    android:exported="true"
    android:process=":sync" >
    <intent-filter>
        <action android:name="android.content.SyncAdapter" />
    </intent-filter>

    <meta-data
        android:name="android.content.SyncAdapter"
        android:resource="@xml/syncadapter" />
</service>

<provider
    android:name="xxxxx"
    android:authorities="xxxxx"
    android:exported="false"
    android:syncable="true" />

<activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
</activity>
<activity
    android:name="xxxxx.MainActivity"
    android:label="@string/app_name" >
</activity>
<activity
    android:name=".InformedConsentActivity"
    android:label="@string/title_activity_informed_consent"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
</activity>
<activity
    android:name=".calendar.CalendarScrapeActivity"
    android:label="@string/title_activity_calendar_scrape"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
</activity>
<activity
    android:name=".calendar.CalendarViewerActivity"
    android:label="@string/title_activity_calendar_viewer"
    android:theme="@style/Theme.AppCompat.Light"
    >
</activity>

<activity
    android:name=".Map.MapPaneActivity"
    android:label="@string/title_activity_calendar_viewer"
    android:theme="@style/Theme.AppCompat.Light"
    >
</activity>
" />

    <receiver
        android:name="xxxxx"
        android:enabled="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" >
            </action>
        </intent-filter>
    </receiver>
    <receiver
        android:name="xxxxx"
        android:enabled="true" >
        <intent-filter>
            <action android:name="xxxxx" />
        </intent-filter>
    </receiver>
    <receiver
        android:name="xxxxx"
        android:enabled="true" >
        <intent-filter>
            <action android:name="local.transition.initialize" />
            <action android:name="local.transition.exited_geofence" />
            <action android:name="local.transition.stopped_moving" />
            <action android:name="local.transition.stop_tracking" />
        </intent-filter>
    </receiver>
    <receiver android:name="xxxxx" >
        <intent-filter>
            <action android:name="android.intent.action.ACTION_BATTERY_LOW" />
            <action android:name="android.intent.action.ACTION_BATTERY_OKAY" />
        </intent-filter>
    </receiver>

    <service
        android:name="xxxxx"
        android:enabled="true" >
    </service>
    <service android:name="xxxxx" >
        <intent-filter>
            <action android:name="android.accounts.AccountAuthenticator" />
        </intent-filter>

        <meta-data
            android:name="android.accounts.AccountAuthenticator"
            android:resource="@xml/authenticator" />
    </service>
    <service
        android:name="xxxxx"
        android:exported="true"
        android:process=":sync" >
        <intent-filter>
            <action android:name="android.content.SyncAdapter" />
        </intent-filter>

        <meta-data
            android:name="android.content.SyncAdapter"
            android:resource="@xml/syncadapter" />
    </service>

    <provider
        android:name="xxxxtracker.smap.StubContentProvider"
        android:authorities="xxxxtracker.provider"
        android:exported="false"
        android:syncable="true" />

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="xxxxtracker.MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name=".InformedConsentActivity"
        android:label="@string/title_activity_informed_consent"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
    </activity>
    <activity
        android:name=".calendar.CalendarScrapeActivity"
        android:label="@string/title_activity_calendar_scrape"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
    </activity>
    <activity
        android:name=".calendar.CalendarViewerActivity"
        android:label="@string/title_activity_calendar_viewer"
        android:theme="@style/Theme.AppCompat.Light"
        >
    </activity>

    <activity
        android:name=".Map.MapPaneActivity"
        android:label="@string/title_activity_calendar_viewer"
        android:theme="@style/Theme.AppCompat.Light"
        >
    </activity>
</application>

Executing tasks: [:mobility:assembleDebug]

Configuration on demand is an incubating feature.
:tracker:compileLint
:tracker:copyReleaseLint UP-TO-DATE
:tracker:preBuild UP-TO-DATE
:tracker:preReleaseBuild UP-TO-DATE
:tracker:checkReleaseManifest
:tracker:preDebugAndroidTestBuild UP-TO-DATE
:tracker:preDebugBuild UP-TO-DATE
:tracker:preDebugUnitTestBuild UP-TO-DATE
:tracker:preReleaseUnitTestBuild UP-TO-DATE
:tracker:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:tracker:prepareComAndroidSupportMediarouterV72200Library UP-TO-DATE
:tracker:prepareComAndroidSupportSupportV42200Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServices750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesAds750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesAnalytics750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesAppindexing750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesAppinvite750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesAppstate750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesBase750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesCast750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesDrive750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesFitness750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesGames750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesGcm750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesIdentity750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesLocation750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesMaps750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesNearby750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesPanorama750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesPlus750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesSafetynet750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesWallet750Library UP-TO-DATE
:tracker:prepareComGoogleAndroidGmsPlayServicesWearable750Library UP-TO-DATE
:tracker:prepareReleaseDependencies
:tracker:compileReleaseAidl UP-TO-DATE
:tracker:compileReleaseRenderscript UP-TO-DATE
:tracker:generateReleaseBuildConfig UP-TO-DATE
:tracker:generateReleaseAssets UP-TO-DATE
:tracker:mergeReleaseAssets UP-TO-DATE
:tracker:generateReleaseResValues UP-TO-DATE
:tracker:generateReleaseResources UP-TO-DATE
:tracker:mergeReleaseResources UP-TO-DATE
:tracker:processReleaseManifest UP-TO-DATE
:tracker:processReleaseResources UP-TO-DATE
:tracker:generateReleaseSources UP-TO-DATE
:tracker:processReleaseJavaRes UP-TO-DATE
:tracker:compileReleaseJava UP-TO-DATE
:tracker:extractReleaseAnnotations UP-TO-DATE
:tracker:mergeReleaseProguardFiles UP-TO-DATE
:tracker:packageReleaseJar UP-TO-DATE
:tracker:compileReleaseNdk UP-TO-DATE
:tracker:packageReleaseJniLibs UP-TO-DATE
:tracker:packageReleaseLocalJar UP-TO-DATE
:tracker:packageReleaseRenderscript UP-TO-DATE
:tracker:packageReleaseResources UP-TO-DATE
:tracker:bundleRelease UP-TO-DATE
:mobility:preBuild UP-TO-DATE
:mobility:preDebugBuild UP-TO-DATE
:mobility:checkDebugManifest
:mobility:preReleaseBuild UP-TO-DATE
:mobility:prepareAndroidtrackerUnspecifiedLibrary UP-TO-DATE
:mobility:prepareComAndroidSupportAppcompatV72200Library UP-TO-DATE
:mobility:prepareComAndroidSupportMediarouterV72200Library UP-TO-DATE
:mobility:prepareComAndroidSupportSupportV42220Library UP-TO-DATE
:mobility:prepareComGithubAlamkanakAndroidWeekView123Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServices750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesAds750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesAnalytics750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesAppindexing750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesAppinvite750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesAppstate750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesBase750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesCast750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesDrive750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesFitness750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesGames750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesGcm750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesIdentity750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesLocation750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesMaps750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesNearby750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesPanorama750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesPlus750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesSafetynet750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesWallet750Library UP-TO-DATE
:mobility:prepareComGoogleAndroidGmsPlayServicesWearable750Library UP-TO-DATE
:mobility:prepareComGoogleMapsAndroidAndroidMapsUtils034Library UP-TO-DATE
:mobility:prepareDebugDependencies
:mobility:compileDebugAidl UP-TO-DATE
:mobility:compileDebugRenderscript UP-TO-DATE
:mobility:generateDebugBuildConfig UP-TO-DATE
:mobility:generateDebugAssets UP-TO-DATE
:mobility:mergeDebugAssets UP-TO-DATE
:mobility:generateDebugResValues UP-TO-DATE
:mobility:generateDebugResources UP-TO-DATE
:mobility:mergeDebugResources UP-TO-DATE
:mobility:processDebugManifest UP-TO-DATE
:mobility:processDebugResources UP-TO-DATE
:mobility:generateDebugSources UP-TO-DATE
:mobility:processDebugJavaRes UP-TO-DATE
:mobility:compileDebugJava UP-TO-DATE
:mobility:compileDebugNdk UP-TO-DATE
:mobility:compileDebugSources UP-TO-DATE
:mobility:preDexDebug UP-TO-DATE
:mobility:dexDebug UP-TO-DATE
:mobility:validateMyConfigSigning
:mobility:packageDebug UP-TO-DATE
:mobility:zipalignDebug UP-TO-DATE
:mobility:assembleDebug UP-TO-DATE

BUILD SUCCESSFUL

Total time: 2.959 secs

Java代码。它主要是带有几个点击侦听器的示例代码。我确实将地图更改为混合,从示例...编辑我认为这不是谷歌样本我现在看到的问题。

        package xxx.xxx.xxx.mobility.Map;

    import android.app.Activity;
    import android.content.Intent;
    import android.location.Address;
    import android.location.Criteria;
    import android.location.Geocoder;
    import android.location.Location;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.Spinner;
    import android.widget.Toast;

    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapFragment;
    import com.google.android.gms.maps.OnMapReadyCallback;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.MarkerOptions;

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;

    import xxx.xxx.xxx.mobility.R;
    import xxx.xxx.xxx.mobility.calendar.CalendarConstants;


    public class MapPaneActivity extends Activity implements OnMapReadyCallback, GoogleMap.OnMapClickListener, GoogleMap.OnMapLongClickListener, Spinner.OnItemSelectedListener {

    final static int MAP_MAX_RESULTS = 10;
    final static String TAG = "MapPaneActivity";
    private Spinner map_selection_spinner;
    private ArrayAdapter<String>  mMapAddressAdapter;
    private LatLng mLatLng;
    private String mCurrentSelection = "";
    Button submit_map_button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map_pane);
        map_selection_spinner = (Spinner) findViewById(R.id.map_selection_spinner);
        submit_map_button = (Button) findViewById(R.id.submit_map_button);
        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        map_selection_spinner.setOnItemSelectedListener(this);

        /*
         * The submit button will take the currently selected label from the spinner
          * and return to the calling activity.
         */

        submit_map_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bundle bundle = new Bundle();
                bundle.putString(CalendarConstants.mapDataKey, mLatLng+CalendarConstants.divider+ mCurrentSelection);
                Intent intent = new Intent();
                intent.putExtras(bundle);
                setResult(RESULT_OK, intent);
                finish();
            }
        });

    }


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
        if (mMapAddressAdapter != null) {
            submit_map_button.setEnabled(true);
            mCurrentSelection = mMapAddressAdapter.getItem(pos);
//            Toast.makeText(getApplicationContext(), mCurrentSelection, Toast.LENGTH_LONG).show();
        }
    }


    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }

    @Override
    public void onMapReady(GoogleMap map) {

        map.setMyLocationEnabled(true);
        map.setOnMapClickListener(this);
        map.setOnMapLongClickListener(this);

        /*
         * Set the map to our cuurent location
         */

        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        String provider = locationManager.getBestProvider(criteria, true);
        Location myLocation = locationManager.getLastKnownLocation(provider);
        double latitude = myLocation.getLatitude();
        double longitude = myLocation.getLongitude();
        LatLng latLng = new LatLng(latitude, longitude);
        map.moveCamera(CameraUpdateFactory.newLatLng(latLng));

        // Zoom in the Google Map
        map.animateCamera(CameraUpdateFactory.zoomTo(17));
        map.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title(getResources().getString(R.string.your_local)));

    }


    /**
     * Handles the clicking of the map fragment.
     * This will mark a location and kick off populating the
     * spinner with addresses
     * @param latLng
     */
    @Override
    public void onMapClick(LatLng latLng) {
        mLatLng = latLng;
//        Toast.makeText(getApplicationContext(), "Clicked at.. " + mLatLng, Toast.LENGTH_LONG).show();
        List<Address> addressList;
        Geocoder geocoder = new Geocoder(getApplicationContext());
        double latitude  = mLatLng.latitude;
        double longitude = mLatLng.longitude;

        try {
            addressList = geocoder.getFromLocation(latitude, longitude, MAP_MAX_RESULTS);
            for(Address address : addressList){
                Log.d(TAG,address+" is at "+mLatLng);
            }
        }
        catch (IOException exception){
            Log.e(TAG, "Got an IO exeption!");

        }

    }

    @Override
    public void onMapLongClick(LatLng latLng) {
        onMapClick(latLng);
    }

}

1 个答案:

答案 0 :(得分:3)

你的问题在这里:

    Location myLocation = locationManager.getLastKnownLocation(provider);
    double latitude = myLocation.getLatitude();

根据您的堆栈跟踪,getLastKnownLocation()正在返回null。那是documented behaviorgetLastKnownLocation()仅适用于对位置进行乐观检查,如果它确实返回null,您可以在没有位置数据的情况下生活,或者use other methods to request location updates并在位置可用后使用该位置。< / p>