私は新しいGoogle Drive Android APIを使用しており、接続して、できることはすべて実行できますが、SpreadsheetService を使用するには、サインインしているユーザーから accountName/email を抽出する必要があります。
それ、どうやったら出来るの?
これは、Google Drive API を接続するコードです。それは正常に動作します。
private void connect() {
if (isGooglePlayServicesAvailable()) {
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
// And, connect!
if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) {
mGoogleApiClient.connect();
writeLog("Connecting...");
}
}
}
ここでは SpreadsheetService API を使用していますが、トークンを取得するにはアカウント名が必要です。
String accountName = "???"; // how do I get this From GoogleClientApi / mGoogleApiClient ?
String accessToken = GoogleAuthUtil.getTokenWithNotification(GDriveActivity.this, accountName, scope, null);
SpreadsheetService service = new SpreadsheetService("v1");
これを追加してみました:
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
...onConnected
メソッド内ですが、 . をスローしNullPointerException
ます。
また、ここに私の許可があります:
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission
android:name="android.permission.VIBRATE" />
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.GET_ACCOUNTS" />
<uses-permission
android:name="android.permission.NETWORK" />
<uses-permission
android:name="android.permission.USE_CREDENTIALS" />