当前位置: 首页 > 知识库问答 >
问题:

google drive api示例中的错误

宓跃
2023-03-14

这段代码来自google drive api示例,我试图实现这段代码,但它在行中显示了错误....Credential=GoogleAccountCredential.usingOAuth2(this,drivescopes.drive);.....给定的错误是......GoogleAccountCredential类型中的方法usingOAuth2(Context,Collection)不适用于参数MainActivity,String......

public class MainActivity extends Activity {
static final int REQUEST_ACCOUNT_PICKER = 1;
static final int REQUEST_AUTHORIZATION = 2;
static final int CAPTURE_IMAGE = 3;

private static Uri fileUri;
private static Drive service;
private GoogleAccountCredential credential;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    credential = GoogleAccountCredential.usingOAuth2(this,
            DriveScopes.DRIVE);
    startActivityForResult(credential.newChooseAccountIntent(),
            REQUEST_ACCOUNT_PICKER);
}

@Override
protected void onActivityResult(final int requestCode,
        final int resultCode, final Intent data) {
    switch (requestCode) {
    case REQUEST_ACCOUNT_PICKER:
        if (resultCode == RESULT_OK && data != null
                && data.getExtras() != null) {
            String accountName = data
                    .getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
            if (accountName != null) {
                credential.setSelectedAccountName(accountName);
                service = getDriveService(credential);
                startCameraIntent();
            }
        }
        break;
    case REQUEST_AUTHORIZATION:
        if (resultCode == Activity.RESULT_OK) {
            saveFileToDrive();
        } else {
            startActivityForResult(credential.newChooseAccountIntent(),
                    REQUEST_ACCOUNT_PICKER);
        }
        break;
    case CAPTURE_IMAGE:
        if (resultCode == Activity.RESULT_OK) {
            saveFileToDrive();
        }
    }
}

private void startCameraIntent() {
    String mediaStorageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES).getPath();
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US)
            .format(new Date());
    fileUri = Uri.fromFile(new java.io.File(mediaStorageDir
            + java.io.File.separator + "IMG_" + timeStamp + ".jpg"));

    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    startActivityForResult(cameraIntent, CAPTURE_IMAGE);
}

private void saveFileToDrive() {
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                // File's binary content
                java.io.File fileContent = new java.io.File(fileUri
                        .getPath());
                FileContent mediaContent = new FileContent("image/jpeg",
                        fileContent);

                // File's metadata.
                File body = new File();
                body.setTitle(fileContent.getName());
                body.setMimeType("image/jpeg");

                File file = service.files().insert(body, mediaContent)
                        .execute();
                if (file != null) {
                    showToast("Photo uploaded: " + file.getTitle());
                    startCameraIntent();
                }
            } catch (UserRecoverableAuthIOException e) {
                startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
    t.start();
}

private Drive getDriveService(GoogleAccountCredential credential) {
    return new Drive.Builder(AndroidHttp.newCompatibleTransport(),
            new GsonFactory(), credential).build();
}

public void showToast(final String toast) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(), toast,
                    Toast.LENGTH_SHORT).show();
        }
    });
}

共有1个答案

单于旭东
2023-03-14

答案在问题中。

该方法需要一个Collection对象,但您传递的是一个简单的String对象。

 类似资料:
  • 以上图示了正常的消息流。 正常流程: 步骤 描述 1 过程Listener启动工作。 2 Worker通过定期向自己发送Do消息来计划工作 3, 4, 5 接收到Do时Worker通知CounterService更新计数器值,三次。Increment消息被转发给Counter,它会更新自己的计数器变量并将当前值发给Storage。 6, 7 Worker向CounterService请求计数器的当

  • 我正在和reqwest图书馆乱搞,想用Rust Playground尝试一些例子。我从web上举了一个最简单的例子,但它不编译。 另一方面,当我在本地计算机(Windows10)上尝试相同的代码时,它确实会编译,但它会导致这个错误: 我已经检查了cargo.toml中的依赖关系: 我认为它与Async/Await运行时有关,但我对Rust语言是新手,我在web上找到的关于这个问题的信息对我来说并不

  • 尝试按照以下说明为python设置ANTLR http://blog . an vard . org/articles/2016/03/15/ANTLR-python . html 另外使用antlr-4.7.2-complete.jar的本地副本 有语法错误。 使用python2这个: 用python3这个: 为了生成python代码,我在工作目录中使用了Antlr4 - 版本4.7.1 - j

  • 本文向大家介绍MySQL中常见的八种SQL错误用法示例,包括了MySQL中常见的八种SQL错误用法示例的使用技巧和注意事项,需要的朋友参考一下 前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。 阿里云

  • 我试图在Tomcat 6中运行Hello World Struts2项目。 我不断得到: 但是,我确实在项目的WEB-INF/lib文件夹中为struts2提供了所需的jars。 罐: struts core xwork ognl freemarker commons文件上传commons io commons lang 有什么想法吗? 我遵循了一个在线Struts2 HelloWorld示例:

  • 本文向大家介绍PHP中通过trigger_error触发PHP错误示例,包括了PHP中通过trigger_error触发PHP错误示例的使用技巧和注意事项,需要的朋友参考一下 PHP中通过trigger_error触发PHP错误示例 【错误抑制符@】 除了 php.ini 中 error_reporting 和 display_errors 的设置、error_reporting() 函数、ini