Google 位 API 位开发者

Google places API multiple developers

我们是一个团队,正在共同开发 android 应用程序。
不幸的是,只有使用 google 地方 API 编写代码的人可以 运行 activity,而其他人则不能。
我们在使用 google 映射 API 时遇到了同样的问题,但这是因为我们都使用了相同的 API 键。
更改 API 密钥(每个人都有自己的密钥)后,问题就停止了。
这是导致崩溃的代码(同样,编写 activity 的人设法 运行 它)

public void refreshPlacesData() {
        Uri uri = PlaceContract.PlaceEntry.CONTENT_URI;
        Cursor data = getContentResolver().query(
                uri,
                null,
                null,
                null,
                null);

        if (data == null || data.getCount() == 0) return;
        List<String> guids = new ArrayList<String>();
        while (data.moveToNext()) {
            guids.add(data.getString(data.getColumnIndex(PlaceContract.PlaceEntry.COLUMN_PLACE_ID)));
        }
        PendingResult<PlaceBuffer> placeResult = Places.GeoDataApi.getPlaceById(mClient,
                guids.toArray(new String[guids.size()]));     <---this is where it crash
        placeResult.setResultCallback(new ResultCallback<PlaceBuffer>() {
            @Override
            public void onResult(@NonNull PlaceBuffer places) {
                mAdapter.swapPlaces(places);
                mGeofencing.updateGeofencesList(places);
                if (mIsEnabled) mGeofencing.registerAllGeofences();
            }
        });
    }



这是错误

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.rubz.dvir.rubz, PID: 25203
                  java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.rubz.dvir.rubz/com.rubz.dvir.rubz.JobRequestActivity}: java.lang.NullPointerException: GoogleApiClient must not be null
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:3382)
                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:3425)
                      at android.app.ActivityThread.access00(ActivityThread.java:139)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1248)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:136)
                      at android.app.ActivityThread.main(ActivityThread.java:5105)
                      at java.lang.reflect.Method.invokeNative(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:515)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
                      at dalvik.system.NativeStart.main(Native Method)
                   Caused by: java.lang.NullPointerException: GoogleApiClient must not be null
                      at com.google.android.gms.common.internal.zzbq.zza(Unknown Source)
                      at com.google.android.gms.common.api.internal.zzm.<init>(Unknown Source)
                      at com.google.android.gms.location.places.zzm$zzb.<init>(Unknown Source)
                      at com.google.android.gms.location.places.zzm$zzc.<init>(Unknown Source)
                      at com.google.android.gms.location.places.internal.zzl.<init>(Unknown Source)
                      at com.google.android.gms.location.places.internal.zzh.getPlaceById(Unknown Source)
                      at com.rubz.dvir.rubz.JobRequestActivity.refreshPlacesData(JobRequestActivity.java:445)
                      at com.rubz.dvir.rubz.JobRequestActivity.onActivityResult(JobRequestActivity.java:515)
                      at android.app.Activity.dispatchActivityResult(Activity.java:5467)
                      at android.app.ActivityThread.deliverResults(ActivityThread.java:3378)
                      at android.app.ActivityThread.handleSendResult(ActivityThread.java:3425) 
                      at android.app.ActivityThread.access00(ActivityThread.java:139) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1248) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:136) 
                      at android.app.ActivityThread.main(ActivityThread.java:5105) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:515) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 
                      at dalvik.system.NativeStart.main(Native Method) 
Application terminated.

您可以将多个 SHA-1's 添加到您的位置 api ,转到 cloud console

然后selectGoogle放置Api,限制你的Api,然后添加SHA的

希望对您有所帮助