【问题标题】:I only want to upload files to Google Drive我只想将文件上传到 Google Drive
【发布时间】:2018-08-01 09:11:15
【问题描述】:

有一种方法可以创建文件并将其上传到官方 Google 文档和演示源。

但是没有办法上传现有文件。

我想知道如何将 Android 应用的文件(例如 Sqlite db 文件)上传到 Google Drive。

谢谢

【问题讨论】:

    标签: android google-drive-android-api


    【解决方案1】:

    您可能需要查看Google Drive Android API,了解如何管理文件内容和元数据。您可以使用 Drive Android API 以两种方式创建文件:使用 DriveClient.newCreateFileActivityIntentSender 方法和 CreateFileActivityOptions 类;或使用DriveResourceClient.createFile 方法。

    您还可以查看这些链接以获取更多参考:

    【讨论】:

    • 请注意,截至 2018 年 12 月,Google Drive Android API 正在被 Google 弃用。
    【解决方案2】:
    private fun handleSignInIntent(resultIntent: Intent) {
        GoogleSignIn.getSignedInAccountFromIntent(resultIntent)
            .addOnSuccessListener {
                Toast.makeText(this, "Sign-in Successful!!", Toast.LENGTH_LONG).show()
                val credentials = GoogleAccountCredential.usingOAuth2(
                    this,
                    Collections.singleton(DriveScopes.DRIVE_FILE)
                )
                credentials.selectedAccount = it.account
                val drive =
                    Drive.Builder(AndroidHttp.newCompatibleTransport(), GsonFactory(), credentials)
                        .setApplicationName("DB BackUp").build()
    
                driveServiceHelper=DriveServiceHelper(drive)
            }
            .addOnFailureListener {
                Toast.makeText(this, "Sign-in Failed!!", Toast.LENGTH_LONG).show()
            }
        }
    
    // Drive Service Helper class : 
    class DriveServiceHelper(private val driveService: Drive) {
        private val executor = Executors.newSingleThreadExecutor()
    
        fun createFile(filePath: String): Task<String> {
            return Tasks.call(executor,object : Callable<String>{
                override fun call(): String {
                    val fileMetadata=File()
                    fileMetadata.name="BACKUP_SAMPLE"
    
                    val fileToUpload = java.io.File(filePath)
    
                    val mediaContent = FileContent("*/*", fileToUpload)
    
                    var myFile = File()
                    try {
                        myFile=driveService.files().create(fileMetadata, mediaContent).execute()
                    } catch (e:Exception){
                        Log.e("DriveException>>", "${e.message} <<<")
                    }
    
                    if (myFile==null)
                        throw IOException("Null file received on Creation")
    
                    return myFile.id
                }
            })
        }
    }
    

    【讨论】:

    • 这里不只是发布一个链接,而是发布一个解释。因此,即使该链接将来可用,人们仍然可以参考您的答案。
    • 请删除您的反对意见我已添加代码
    猜你喜欢
    • 2020-03-10
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多