无法在Fragment中找到当前位置

Pra*_*tik 8 android location google-places-api

我正在尝试使用Places API获取当前位置.请在下面找到代码

 public class PlaceFragment extends Fragment implements View.OnClickListener {

private Button currentLocation;

private View myFragmentView;

private GoogleApiClient mGoogleApiClient;

private static final int MY_PERMISSIONS_REQUEST_LOCATION = 101;


public PlaceFragment() {
    // Required empty public constructor
}


@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    mGoogleApiClient = new GoogleApiClient
            .Builder(getActivity())
            .addApi(Places.GEO_DATA_API)
            .addApi(Places.PLACE_DETECTION_API)
            .build();

}

@Override
public void onStart() {

    super.onStart();
    if (mGoogleApiClient != null)
        mGoogleApiClient.connect();

}

@Override
public void onStop() {

    if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
        mGoogleApiClient.disconnect();
    }
    super.onStop();

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    myFragmentView = inflater.inflate(R.layout.fragment_place, container, false);

    currentLocation = (Button) myFragmentView.findViewById(R.id.currentLocation);
    currentLocation.setOnClickListener(this);

    return myFragmentView;
}

@Override
public void onClick(View v) {

    if (v.getId() == R.id.currentLocation) {

        int permissionCheck = ContextCompat.checkSelfPermission(getActivity(),
                Manifest.permission.ACCESS_FINE_LOCATION);

        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_LOCATION);
        } else {
            getCurrentLocation();
        }
    }
}


@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_LOCATION: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.
                getCurrentLocation();

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}


private void getCurrentLocation() {

    PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
    result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
        @Override
        public void onResult(PlaceLikelihoodBuffer likelyPlaces) {

            PlaceLikelihood placeLikelihood = likelyPlaces.get(0);
            String content = "";
            if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName()))
                content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
            if (placeLikelihood != null)
                content += "Percent change of being there: " + (int) (placeLikelihood.getLikelihood() * 100) + "%";
            System.out.println(content);

            likelyPlaces.release();
        }
    });
}
}
Run Code Online (Sandbox Code Playgroud)

但我既没有得到权限对话也没有任何有效的当前位置,我尝试通过删除访问来提供访问权限.这是我在监视器中遇到的错误

 E/Places: Timed out waiting for a location for getCurrentPlace
 11-11 10:41:46.417 2591-2591/com.kumarpratik.WhatsAround E/UncaughtException: java.lang.IllegalStateException
                                                                              at com.google.android.gms.common.internal.zzac.zzbr(Unknown Source)
                                                                              at com.google.android.gms.common.data.zzc.zzfz(Unknown Source)
                                                                              at com.google.android.gms.common.data.zzc.<init>(Unknown Source)
                                                                              at com.google.android.gms.location.places.internal.zzt.<init>(Unknown Source)
                                                                              at com.google.android.gms.location.places.internal.zzn.<init>(Unknown Source)
                                                                              at com.google.android.gms.location.places.PlaceLikelihoodBuffer.get(Unknown Source)
                                                                              at com.kumarpratik.WhatsAround.fragment.PlaceFragment$1.onResult(PlaceFragment.java:147)
                                                                              at com.kumarpratik.WhatsAround.fragment.PlaceFragment$1.onResult(PlaceFragment.java:143)
                                                                              at com.google.android.gms.internal.zzqe$zza.zzb(Unknown Source)
                                                                              at com.google.android.gms.internal.zzqe$zza.handleMessage(Unknown Source)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:135)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5292)
                                                                              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:904)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
11-11 10:41:46.664 2591-2591/com.kumarpratik.WhatsAround E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: com.kumarpratik.WhatsAround, PID: 2591
                                                                       java.lang.IllegalStateException
                                                                           at com.google.android.gms.common.internal.zzac.zzbr(Unknown Source)
                                                                           at com.google.android.gms.common.data.zzc.zzfz(Unknown Source)
                                                                           at com.google.android.gms.common.data.zzc.<init>(Unknown Source)
                                                                           at com.google.android.gms.location.places.internal.zzt.<init>(Unknown Source)
                                                                           at com.google.android.gms.location.places.internal.zzn.<init>(Unknown Source)
                                                                           at com.google.android.gms.location.places.PlaceLikelihoodBuffer.get(Unknown Source)
                                                                           at com.kumarpratik.WhatsAround.fragment.PlaceFragment$1.onResult(PlaceFragment.java:147)
                                                                           at com.kumarpratik.WhatsAround.fragment.PlaceFragment$1.onResult(PlaceFragment.java:143)
                                                                           at com.google.android.gms.internal.zzqe$zza.zzb(Unknown Source)
                                                                           at com.google.android.gms.internal.zzqe$zza.handleMessage(Unknown Source)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:135)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5292)
                                                                           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:904)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
11-11 10:42:33.120 18739-3697/? E/GeofenceHelper: Failed: remove geofences by PendingIntent
Run Code Online (Sandbox Code Playgroud)

这是我的清单文件

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.INTERNET" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>

<application android:name=".common.AppController" android:allowBackup="true" android:debuggable="true"
android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true"
android:theme="@style/MyMaterialTheme">
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/googlekey" />

<activity android:name=".activity.MainActivity" android:label="@string/title_activity_welcome"
    android:launchMode="standard" android:theme="@style/MyMaterialTheme" />
<activity android:name=".activity.IntroActivity" android:theme="@style/MyMaterialTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.kumarpratik.WhatsAround.activity.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)

编辑

我在onResult()中获得PlaceLikelihoodBuffer {status = Status {statusCode = ERROR,resolution = null},attributions = null}

Gen*_*mes 1

当您和您的依赖项使用不同版本的 Google Play 服务 - GPS 时,就会发生这种情况。因此,您需要将它们更新到相同版本,或者只是在项目中更新到最新版本。首先,检查您的 Build Gradle 文件是否包含与 Google Play 依赖项相关的错误警告。并尝试更新它!

错误之一:

任务“:app:processDebugGoogleServices”执行失败。请通过更新 google-services 插件的版本(有关最新版本的信息可在此处获取)或将 com.google.android.gms 的版本更新到 8.3.0 来解决版本冲突。

    /*
     * Update GPA regarding to issue with
     * conflict google services dependencies!
     */
    compile 'com.google.android.gms:play-services-base:9.6.1'
    // Google Play Services Maps
    compile 'com.google.android.gms:play-services-maps:9.6.1'
Run Code Online (Sandbox Code Playgroud)