You can list all files with Google Drive API as below.
#first step do signIn..
private void requestSignIn() {
googleSignInClient = buildGoogleSignInClient();
someActivityResultLauncher.launch(googleSignInClient.getSignInIntent();
}
private GoogleSignInClient buildGoogleSignInClient() {
GoogleSignInOptions signInOptions =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope("https://www.googleapis.com/auth/drive"))
// .requestScopes(new Scope(DriveScopes.DRIVE_FILE))
.requestEmail()
.build();
return GoogleSignIn.getClient(getApplicationContext(), signInOptions);
}
ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == Activity.RESULT_OK) {
// There are no request codes
Intent resultData = result.getData();
handleSignInResult(resultData);
}
}
});
GoogleSignIn.getSignedInAccountFromIntent(result)
.addOnSuccessListener(googleAccount -> {
GoogleAccountCredential credential =
GoogleAccountCredential.usingOAuth2(
this, Collections.singleton(DriveScopes.DRIVE_FILE));
credential.setSelectedAccount(googleAccount.getAccount());
Drive googleDriveService =
new Drive.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
credential)
.setApplicationName("Drive API Migration")
.build();
mDriveServiceHelper = new
GoogleDriveServiceHelper(googleDriveService);
getAll(googleAccount);
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Log.e(TAG, "Unable to sign in.", exception);
showMessage("Unable to sign in.");
}
});
public void getAll(GoogleSignInAccount googleAccount) {
DriveServiceHelper mDriveServiceHelper1 = new DriveServiceHelper(DriveServiceHelper.getGoogleDriveService(getApplicationContext(), googleAccount, "Screen mirroring"));
mDriveServiceHelper1.queryFiles()
.addOnSuccessListener(new OnSuccessListener<List<GoogleDriveFileHolder>>() {
@Override
public void onSuccess(List<GoogleDriveFileHolder> googleDriveFileHolders) {
Gson gson = new Gson();
Intent intent = new Intent(GdriveMainActivity.this, ListActivity.class);
ListActivity.setdata(googleDriveFileHolders);
Log.e(TAG, "onSuccess: result: " + googleDriveFileHolders.size());
startActivity(intent);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "onSuccess: " + e.getLocalizedMessage());
}
});
}
public class DriveServiceHelper {
private final Executor mExecutor =
Executors.newSingleThreadExecutor();
private final Drive mDriveService;
public DriveServiceHelper(Drive driveService) {
mDriveService = driveService;
}
public static Drive getGoogleDriveService(Context context, GoogleSignInAccount account, String appName) {
GoogleAccountCredential credential =
GoogleAccountCredential.usingOAuth2(
context,Collections.singleton("https://www.googleapis.com/auth/drive");
credential.setSelectedAccount(account.getAccount());
com.google.api.services.drive.Drive googleDriveService =
new com.google.api.services.drive.Drive.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
credential)
.setApplicationName(appName)
.build();
return googleDriveService;
}
public Task<List<GoogleDriveFileHolder>> queryFiles() {
return Tasks.call(mExecutor, new Callable<List<GoogleDriveFileHolder>>() {
@Override
public List<GoogleDriveFileHolder> call() throws Exception {
List<GoogleDriveFileHolder> googleDriveFileHolderList = new ArrayList<>();
FileList result = mDriveService.files().list().execute();
for (int i = 0; i < result.getFiles().size(); i++) {
Log.d("TAG", "call: "+(result.getFiles().get(i)));
GoogleDriveFileHolder googleDriveFileHolder = new GoogleDriveFileHolder();
googleDriveFileHolder.setId(result.getFiles().get(i).getId());
googleDriveFileHolder.setName(result.getFiles().get(i).getName());
if (result.getFiles().get(i).getName() != null) {
googleDriveFileHolder.setName(result.getFiles().get(i).getName());
}
if (result.getFiles().get(i).getModifiedTime() != null) {
// googleDriveFileHolder.setModifiedTime(result.getFiles().get(i).getModifiedTime());
}
if (result.getFiles().get(i).getCreatedTime() != null) {
// googleDriveFileHolder.setCreatedTime(result.getFiles().get(i).getCreatedTime());
}
if (result.getFiles().get(i).getStarred() != null) {
// googleDriveFileHolder.setStarred(result.getFiles().get(i).getStarred());
}
if (result.getFiles().get(i).getMimeType() != null) {
//googleDriveFileHolder.setMimeType(result.getFiles().get(i).getMimeType());
}
googleDriveFileHolderList.add(googleDriveFileHolder);
}
return googleDriveFileHolderList;
}
}
);
}
public Task<List<GoogleDriveFileHolder>> queryFiles(@Nullable final String folderId) {
return Tasks.call(mExecutor, new Callable<List<GoogleDriveFileHolder>>() {
@Override
public List<GoogleDriveFileHolder> call() throws Exception {
List<GoogleDriveFileHolder> googleDriveFileHolderList = new ArrayList<>();
String parent = "root";
if (folderId != null) {
parent = folderId;
}
FileList result = mDriveService.files().list().setQ("'" + parent + "' in parents").setFields("files(id, name,size,createdTime,modifiedTime,starred,mimeType)").setSpaces("drive").execute();
for (int i = 0; i < result.getFiles().size(); i++) {
GoogleDriveFileHolder googleDriveFileHolder = new GoogleDriveFileHolder();
googleDriveFileHolder.setId(result.getFiles().get(i).getId());
googleDriveFileHolder.setName(result.getFiles().get(i).getName());
if (result.getFiles().get(i).getSize() != null) {
//googleDriveFileHolder.setSize(result.getFiles().get(i).getSize());
}
if (result.getFiles().get(i).getModifiedTime() != null) {
// googleDriveFileHolder.setModifiedTime(result.getFiles().get(i).getModifiedTime());
}
if (result.getFiles().get(i).getCreatedTime() != null) {
// googleDriveFileHolder.setCreatedTime(result.getFiles().get(i).getCreatedTime());
}
if (result.getFiles().get(i).getStarred() != null) {
// googleDriveFileHolder.setStarred(result.getFiles().get(i).getStarred());
}
if (result.getFiles().get(i).getMimeType() != null) {
//googleDriveFileHolder.setMimeType(result.getFiles().get(i).getMimeType());
}
googleDriveFileHolderList.add(googleDriveFileHolder);
}
return googleDriveFileHolderList;
}
}
);
}
/**
* Returns an {@link Intent} for opening the Storage Access Framework file picker.
*/
public Intent createFilePickerIntent() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
return intent;
}
}