【问题标题】:Connect to Google Drive from BroadcastReceiver / AsyncTask从 BroadcastReceiver / AsyncTask 连接到 Google Drive
【发布时间】:2014-11-05 16:35:30
【问题描述】:

我需要从 BroadcastReceiver / AsyncTask 中连接并上传到 Google Drive。但是当我尝试将我的 GoogeApiClient 连接到 Google 服务时,我得到了:

ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{XXXXX: android.os.BinderProxy@XXXXX}}

我猜这是因为还没有提示授权我的应用。

问题:有没有办法在BroadcastReceiver 中触发该提示? ConnectionResult.startResolutionForResult() 需要一个 Activity ...

替代问题:授权我的应用的最佳方式是什么?我是否需要先引导用户进行一些他授予 GDrive 访问权限的活动?

【问题讨论】:

    标签: android android-asynctask google-play-services google-drive-api google-api-client


    【解决方案1】:

    你不应该从广播接收器做这样的事情。即使用户正确登录,您仍然需要连接到广播接收器中的 google play 服务。但是广播接收器只持续几秒钟,任何上传都可以接管。

    IMO 的正确程序是在应用启动时让用户登录。当你的广播接收器被击中时,启动一个特殊的服务来完成所有的工作,如果你从谷歌播放服务中得到一个错误,你在服务中什么都不做

    【讨论】:

    • 该服务可以触发授权吗?我从 BroadcastReceiver 启动了一个 AsyncTask - 这也会导致 ANR 吗?
    • 服务无法触发身份验证,您需要一个活动。服务中的 AsyncTask 是完全正常的
    • 好的,这意味着我必须直接从我的应用程序中提示身份验证。如果我的应用尚未获得授权,如果我为此目的创建了一个 Intent 怎么办?在我的 AsyncTask 中。
    • 我不明白你的意思
    • 假设用户尚未授权我的应用使用 GDrive。我的应用收到广播并尝试连接到 GDrive。 ConnectionResult 是上面的,所以创建了一个新的 Intent 来提示 auth。
    猜你喜欢
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2016-02-24
    • 1970-01-01
    • 2022-01-28
    相关资源
    最近更新 更多