したがって、私のAndroidプロジェクトのres
フォルダのすぐ下に格納されているファイルSERVICE_ACCT_KEYFILE
を渡す必要があります。私はこのようsetServiceAccountPrivateKeyFromP12File()
を設定しています:nullオブジェクト参照のjava.net.URL.getFile()
private static GoogleCredential authorize() throws Exception {
return new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCT_EMAIL)
.setServiceAccountPrivateKeyFromP12File(new File(
PredictionSample.class.getResource("/" + SERVICE_ACCT_KEYFILE).getFile()))
.setServiceAccountScopes(Arrays.asList(PredictionScopes.PREDICTION,
StorageScopes.DEVSTORAGE_READ_ONLY))
.build();
}
この例では、Javaで完璧に動作し、まだ私はAndroidの中でそれを実装しようとしていたとき、私は次のようなエラーがあります。
Attempt to invoke virtual method 'java.lang.String java.net.URL.getFile()' on a null object reference
でもやってこれは失敗します:
String keyPath = "android.resource://" + MainActivity.PACKAGE_NAME + "/" + R.raw.pretense307cf970d6b1;
return new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCT_EMAIL)
.setServiceAccountPrivateKeyFromP12File(new File(
PredictionSample.class.getResource(keyPath).getFile()))
.setServiceAccountScopes(Arrays.asList(PredictionScopes.PREDICTION,
StorageScopes.DEVSTORAGE_READ_ONLY))
.build();
}
どうすれば解決できますか?
ありがとうございました。
アンドロイドリソースおよびJavaリソースは同じものではありません。 doc:https://developer.android.com/guide/topics/resources/providing-resources.html – njzk2
@ njzk2私はそれを理解して翻訳を試みました。しかし、成功はありません。何か案は? –
あなたは 'File'として生のリソースにアクセスすることはできません。しかし、私がリンクしているドキュメントは、ファイルの内容にどのようにアクセスできるかを示しています。 – njzk2