Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有替代方法:Drive.getDriveClient()、Drive.getDriveResourceClient、。。。来自不推荐的api?_Java_Android_Google Drive Api - Fatal编程技术网

Java 是否有替代方法:Drive.getDriveClient()、Drive.getDriveResourceClient、。。。来自不推荐的api?

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

代码中不推荐的方法(如下)使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.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()
        );
    }