Java 是否有替代方法:Drive.getDriveClient()、Drive.getDriveResourceClient、。。。来自不推荐的api?
代码中不推荐的方法(如下)使Google Drive Picker能够集成到Android应用程序中Java 是否有替代方法:Drive.getDriveClient()、Drive.getDriveResourceClient、。。。来自不推荐的api?,java,android,google-drive-api,Java,Android,Google Drive Api,代码中不推荐的方法(如下)使Google Drive Picker能够集成到Android应用程序中 import com.google.android.gms.drive.Drive; // deprecated import com.google.android.gms.drive.Drive; // deprecated import com.google.android.gms.drive.DriveClient; // deprecated import com.google.andr
import com.google.android.gms.drive.Drive; // deprecated
import com.google.android.gms.drive.Drive; // deprecated
import com.google.android.gms.drive.DriveClient; // deprecated
import com.google.android.gms.drive.DriveFile; // deprecated
import com.google.android.gms.drive.DriveId; // deprecated
import com.google.android.gms.drive.DriveResourceClient; // deprecated
import com.google.android.gms.drive.Metadata; // deprecated
import com.google.android.gms.drive.OpenFileActivityOptions; // deprecated
import com.google.android.gms.drive.query.Filters; // deprecated
import com.google.android.gms.drive.query.SearchableField; // deprecated
// ...
/**
* Handles high-level drive functions like sync
*/
private DriveClient mDriveClient; // deprecated
private Drive mDriveService; // deprecated
/**
* Handle access to Drive resources/files.
*/
private DriveResourceClient mDriveResourceClient; // deprecated
// ...
/**
* Continues the sign-in process, initializing the Drive clients with the current
* user's account.
*/
private void initializeDriveClient(GoogleSignInAccount signInAccount) {
mDriveClient = Drive.getDriveClient(getApplicationContext(), signInAccount);
mDriveResourceClient = Drive.getDriveResourceClient(getApplicationContext(), signInAccount);
// ...
}
/**
* Prompts the user to select a folder using OpenFileActivity.
*
* @param openOptions Filter that should be applied to the selection
* @return Task that resolves with the selected item's ID.
*/
private Task<DriveId> pickItem(OpenFileActivityOptions openOptions) {
mOpenItemTaskSource = new TaskCompletionSource<>();
getDriveClient()
.newOpenFileActivityIntentSender(openOptions)
.continueWith((Continuation<IntentSender, Void>) task -> {
startIntentSenderForResult(
task.getResult(), REQUEST_CODE_OPEN_ITEM,
null, 0, 0, 0);
return null;
});
return mOpenItemTaskSource.getTask();
}
/**
* Handles resolution callbacks.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_OPEN_ITEM:
if (resultCode == RESULT_OK) {
DriveId driveId = data.getParcelableExtra(
OpenFileActivityOptions.EXTRA_RESPONSE_DRIVE_ID);
mOpenItemTaskSource.setResult(driveId);
fileId = driveId.getResourceId();
} else {
mOpenItemTaskSource.setException(
new RuntimeException("Unable to open file")
);
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
/**
* To retrieve the metadata of a file.
*/
private void retrieveMetadata(final DriveFile file) {
Task<Metadata> getMetadataTask = getDriveResourceClient().getMetadata(file);
getMetadataTask
.addOnSuccessListener(this,
(Metadata metadata) -> {
showMessage(getString(
R.string.metadata_retrieved, metadata.getTitle()));
fileName = metadata.getTitle();
sendDownloadAuthData();
finish();
})
.addOnFailureListener(this, e -> {
Log.e(TAG, "Unable to retrieve metadata", e);
showMessage(getString(R.string.read_failed));
finish();
});
}
protected DriveResourceClient getDriveResourceClient() {
return mDriveResourceClient;
}
protected DriveClient getDriveClient() {
return mDriveClient;
}
有关链接问题的其他信息:
我可以用什么替换不推荐的方法来保留程序的功能?您有什么建议?您可以通过Uri重命名文件,然后找到它并获取其文件id
public Uri renameFile(ContentResolver contentResolver, Uri uri, String newFilename) {
Uri newLink = null;
try {
newLink = DocumentsContract.renameDocument(context, uri, newFilename);
} catch (SecurityException e2) {
e2.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return newLink;
}
Task<FileList> queryFile(String newFileName) {
return Tasks.call(mExecutor, () ->
service.files().list()
.setQ("mimeType='application/vnd.google-apps.spreadsheet'")
.setQ("fullText contains " + "'" + newFileName + "'")
.setQ("trashed = false")
.setFields("files(id, name)")
.execute()
);
}
公共Uri重命名文件(ContentResolver ContentResolver,Uri Uri,字符串newFilename){
urinewlink=null;
试一试{
newLink=DocumentsContract.renameDocument(上下文、uri、新文件名);
}捕获(安全异常e2){
e2.printStackTrace();
}catch(filenotfounde异常){
e、 printStackTrace();
}
返回newLink;
}
任务查询文件(字符串newFileName){
返回任务。调用(mExecutor,()->
service.files().list()
.setQ(“mimeType='application/vnd.google apps.spreadsheet')
.setQ(“全文包含“+”+新文件名+”)
.setQ(“垃圾=false”)
.setFields(“文件(id、名称)”)
.execute()
);
}
您可以通过Uri重命名文件,然后找到它并获取其文件id
public Uri renameFile(ContentResolver contentResolver, Uri uri, String newFilename) {
Uri newLink = null;
try {
newLink = DocumentsContract.renameDocument(context, uri, newFilename);
} catch (SecurityException e2) {
e2.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return newLink;
}
Task<FileList> queryFile(String newFileName) {
return Tasks.call(mExecutor, () ->
service.files().list()
.setQ("mimeType='application/vnd.google-apps.spreadsheet'")
.setQ("fullText contains " + "'" + newFileName + "'")
.setQ("trashed = false")
.setFields("files(id, name)")
.execute()
);
}
公共Uri重命名文件(ContentResolver ContentResolver,Uri Uri,字符串newFilename){
urinewlink=null;
试一试{
newLink=DocumentsContract.renameDocument(上下文、uri、新文件名);
}捕获(安全异常e2){
e2.printStackTrace();
}catch(filenotfounde异常){
e、 printStackTrace();
}
返回newLink;
}
任务查询文件(字符串newFileName){
返回任务。调用(mExecutor,()->
service.files().list()
.setQ(“mimeType='application/vnd.google apps.spreadsheet')
.setQ(“全文包含“+”+新文件名+”)
.setQ(“垃圾=false”)
.setFields(“文件(id、名称)”)
.execute()
);
}
谢谢!我会试试。这并不能解决我的应用程序功能的一些问题,但你给了我一个折衷的解决方案。我希望在不久的将来,谷歌工程师会在一个新的api中插入一个Android文件选择器。谢谢非常感谢。我会试试。这并不能解决我的应用程序功能的一些问题,但你给了我一个折衷的解决方案。我希望在不久的将来,谷歌工程师会在一个新的api中插入一个Android文件选择器。谢谢你检查过手册了吗?是的,这是我最近三周的手册。从这里开始:“文件选择器UI。对于使用Android API的文件选择器的客户端(例如,通过调用DriveClient#newOpenFileActivityIntentSender),我们建议使用存储访问框架(SAF)它访问驱动程序Android应用程序的内容提供商。示例应用程序演示如何启动文件选择器意图并处理其返回的数据。“您检查了吗?是的,这是我最近三周的手册。从这里开始:“文件选择器UI。对于使用Android API的文件选择器的客户端(例如,通过调用DriveClient#newOpenFileActivityIntentSender),我们建议使用存储访问框架(SAF)它访问驱动器Android应用程序的内容提供商。示例应用程序演示如何启动文件选择器意图并处理其返回的数据。”
public Uri renameFile(ContentResolver contentResolver, Uri uri, String newFilename) {
Uri newLink = null;
try {
newLink = DocumentsContract.renameDocument(context, uri, newFilename);
} catch (SecurityException e2) {
e2.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return newLink;
}
Task<FileList> queryFile(String newFileName) {
return Tasks.call(mExecutor, () ->
service.files().list()
.setQ("mimeType='application/vnd.google-apps.spreadsheet'")
.setQ("fullText contains " + "'" + newFileName + "'")
.setQ("trashed = false")
.setFields("files(id, name)")
.execute()
);
}