web-dev-qa-db-ja.com

RuntimeExecutionException:com.google.Android.gms.common.api.ApiException:13:ERROR Places API

Androidで 現在の場所 の可能性のある場所を取得するためにGoogle Places APIを試しているときに、次の例外が発生します。

Process: me.nabeelkottol.linkedinplaces, PID: 2995
 com.google.Android.gms.tasks.RuntimeExecutionException: 
 com.google.Android.gms.common.api.ApiException: 13: ERROR
 at com.google.Android.gms.tasks.zzn.getResult(Unknown Source)
 at 
 me.nabeelkottol.linkedinplaces.MainActivity$1.onComplete(MainActivity.Java:71)
 at com.google.Android.gms.tasks.zzf.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:148)
 at Android.app.ActivityThread.main(ActivityThread.Java:5417)
 at Java.lang.reflect.Method.invoke(Native Method)
 at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:726)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:616)
Caused by: com.google.Android.gms.common.api.ApiException: 13: ERROR
 at com.google.Android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.Android.gms.common.internal.zzbk.zzaa(Unknown Source)
 at com.google.Android.gms.common.internal.zzbl.zzs(Unknown Source)
 at com.google.Android.gms.common.api.internal.zzs.zzc(Unknown Source)
 at com.google.Android.gms.common.api.internal.zzs.setResult(Unknown Source)
 at com.google.Android.gms.location.places.zzm.zzao(Unknown Source)
 at com.google.Android.gms.location.places.internal.zzx.onTransact(Unknown Source)
 at Android.os.Binder.execTransact(Binder.Java:453)

これは私のコードです:

try {
      Task<PlaceLikelihoodBufferResponse> placeResult = mPlaceDetectionClient.getCurrentPlace(null);
      placeResult.addOnCompleteListener(new OnCompleteListener<PlaceLikelihoodBufferResponse>() {
        @Override public void onComplete(@NonNull Task<PlaceLikelihoodBufferResponse> task) {

          PlaceLikelihoodBufferResponse likelyPlaces = task.getResult();
          for (PlaceLikelihood placeLikelihood : likelyPlaces) {
            Log.i(TAG,
                String.format("Place '%s' has likelihood: %g", placeLikelihood.getPlace().getName(),
                    placeLikelihood.getLikelihood()));
          }
          likelyPlaces.release();

        }
      });
    } catch (SecurityException e) {
      e.printStackTrace();
    }

ここで、PlaceLikelihoodBufferResponse likelyPlaces = task.getResult();行はエラーを示しています。

API keyからデバッグ用のパッケージ名とSHA-1キーを指定して、Androidアプリ用のGoogle API consoleを作成しました。 librariesセクションのenabled Google Places API for Android。それでも同じエラーが発生します。実装の何が問題なのかわかりません。私を助けてください。

これに関して issue がgithubで報告されています。

これは私のapp/build.gradleです

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "me.nabeelkottol.linkedinplaces"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.Android.support:appcompat-v7:26.1.0'
    implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.Android.gms:play-services-places:11.6.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.1'
    androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'
}

これは私のAndroidManifest.xmlです。

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="me.nabeelkottol.linkedinplaces">

  <uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>
  <uses-permission Android:name="Android.permission.INTERNET"/>

  <application
      Android:allowBackup="true"
      Android:icon="@mipmap/ic_launcher"
      Android:label="@string/app_name"
      Android:roundIcon="@mipmap/ic_launcher_round"
      Android:supportsRtl="true"
      Android:theme="@style/AppTheme">
    <meta-data
        Android:name="com.google.Android.geo.API_KEY"
        Android:value="My API Key here"/>

    <activity Android:name=".MainActivity">
      <intent-filter>
        <action Android:name="Android.intent.action.MAIN"/>

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

</manifest>
24
Nabeel K

マニフェストに以下のコードを追加します

 <meta-data
            Android:name="com.google.Android.gms.version"
            Android:value="@integer/google_play_services_version" />
14
Umar Ata

私は同じ問題を抱えていましたが、GoogleコンソールからGoogleプレイスApiを有効にし、プレイスAPIキーを追加することで解決できました。 Places APIを有効にするとすぐに、APIキーを追加するよう自動的に求められます。指示に従ってください。

次に、マニフェストファイルにAPIキーを追加します。

<application
    ...

    <meta-data
        Android:name="com.google.Android.geo.API_KEY"
        Android:value="YOUR_API_KEY" />

</application>

また、エミュレータには最新のGoogle Play開発者サービスがインストールされている必要があります。それ以外の場合は、テストに実際のAndroidデバイスを使用します。

6
Ashwin

この問題に関する議論 こちら を見ることができます。私にとって、問題はエミュレーターで発生しましたが、物理デバイスで動作していました。

4
at3r

OK。これを知るために私がやったほど時間を無駄にしないように願っています。しかし、@ Umar Ataの回答を機能させるには、マニフェストファイルに両方のメタデータタグを入れる必要があります。したがって、このようになります。

<application>
...
<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="PASTE_YOUR_API_KEY_HERE" />
...    
</application>

そして、すべてを正しく行った後でもエラーが発生しました:PLACES_API_ACCESS_NOT_CONFIGURED 9003は、AndroidのPlaces SDKを有効にすることで修正されました。

After enabling Places API enable other additional APIs from inside the APIs tab.

2
Muhammad Taha

ロケーション設定がオフになっているときにもこの例外が発生しました。 API呼び出しを行う前に、位置情報サービスが有効になっていることを確認してください。

1
Romil

それが機能するように、次の希望を試してみてください。

1)\ sdk\extras\google\google_play_servicesを更新して、もう一度お試しください。

2)proguardを使用している場合、proguard-rules.proでこのような難読化からGoogleクラスを除外してください:

-keep public class com.google.** {*;}

3)play-servicesライブラリのバージョンは同じである必要があります。例:

compile 'com.google.Android.gms:play-services-maps:11.6.0'
compile 'com.google.Android.gms:play-services-gcm:11.6.0'

4)私はこの問題を抱えていましたが、次のようにgradleバージョンをダウングレードすることで解決しました:

古い、面倒なバージョン:

 classpath 'com.Android.tools.build:gradle:2.2.0-rc2'

修正バージョン:

classpath 'com.Android.tools.build:gradle:2.3.3'

プロジェクトレベルのgradleファイルに次の依存関係を追加することを忘れないでください。

 dependencies {
        classpath 'com.Android.tools.build:gradle:2.3.3'
        classpath 'com.google.gms:google-services:3.1.0'

    } 
1
Dilip

私の場合、com.google.Android.gms.versioncom.google.Android.geo.API_KEYの両方がマニフェストに既に追加されています。プロジェクトを新しいシステムに切り替えたため、このエラーが発生した理由sha1キーがリストから一致しませんでした。

このエラーを解決するためにしたことは、新しいシステムから新しいSHA1を生成し、このSHA1を下に追加したことです

クレデンシャル=> APIキー=>その後、パッケージ名とSHA1を追加します

Places SDK for Android

0
Suraj Vaishnav

マニフェストファイルに次のメタデータを追加したことを確認してください。

<application
    ...

    <meta-data
        Android:name="com.google.Android.geo.API_KEY"
        Android:value="YOUR_API_KEY" />

</application>

また、Google APIコンソールでAPIの制限を確認してください。 API_KEYに対するAPI制限を有効にしている場合、特定のAPIに対してのみ機能します。 APIの制限の下でPlaces SDK for Androidを追加する必要があります。

enter image description here

0
Nas