OK、2つのデバイスがあり、両方とも同じgmailアカウントを持ち、両方とも同じアプリを持っていますが、異なるキーで署名されています. SHA1 キーは Google コンソールで構成されます。
あるデバイスからいくつかのテキスト ファイルをアップロードしていて、これらのファイルを別のデバイスにインポートしたいと考えています。ファイルをアップロードし、同じデバイスでファイルを取得できるようになりましたが、別のデバイスからアップロードされたファイルを取得できません。結果は空ですが、log cat にエラーはありません。
2 番目のデバイスからファイルをアップロードすると、2 番目のデバイスからのみこれらのファイルをインポートできます。したがって、問題は、ファイルをアップロードするデバイスからのみ機能するファイルのインポートです。
アップロードしているデバイスに関係なくファイルを取得したい。
注 - Google ドライブ アプリでは、ファイルがどのデバイスからアップロードされたかに関係なく、すべてのファイルが表示されます。
ここにコードがあります
private List<File> retrieveAllFiles(Drive service) throws IOException {
List<File> result = new ArrayList<File>();
Files.List request = service.files().list();
do {
try {
FileList files = request.execute();
result.addAll(files.getItems());
request.setPageToken(files.getNextPageToken());
} catch (final UserRecoverableAuthIOException e) {
System.out.println("An error occurred: " + e);
request.setPageToken(null);
runOnUiThread(new Runnable() {
@Override
public void run() {
startActivityForResult(e.getIntent(),
REQUEST_AUTHORIZATION);
}
});
break;
}
} while (request.getPageToken() != null
&& request.getPageToken().length() > 0);
Log.v("result", result.toString());
return result;
}
アップデート
認証コードはこちら
SharedPreferences preferences = getSharedPreferences("pref",
MODE_PRIVATE);
String accountName = preferences.getString("accountName", "");
credential = GoogleAccountCredential.usingOAuth2(this,
Arrays.asList(DriveScopes.DRIVE_FILE));
if (accountName.equals("")) {
startActivityForResult(credential.newChooseAccountIntent(),
REQUEST_ACCOUNT_PICKER);
} else {
credential.setSelectedAccountName(accountName);
service = getDriveService(credential);
}