所以我需要传递一个密钥(.p12
)文件SERVICE_ACCT_KEYFILE
,它直接存储在我的Android项目中的res
文件夹下。我设置了setServiceAccountPrivateKeyFromP12File()
就象这样:java.net.URL.getFile()null对象引用
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();
}
我该如何解决?
谢谢。
的Android资源和Java资源是不一样的东西。看到文档:https://developer.android.com/guide/topics/resources/providing-resources.html – njzk2
@ njzk2我意识到这一点,我试图翻译。但没有成功。有任何想法吗? –
您无法以“文件”的形式访问原始资源。但是,我链接的文档告诉你如何访问文件的内容。 – njzk2