Pza*_*nno 5 java android exception google-drive-api
我已经在我的Android应用程序中实现了谷歌驱动器,它工作得很好,但我想找到一种方法在后台线程中运行上传/下载,这样我就可以在我的应用程序上留下一个活动并做一些其他事情.问题是,驱动器在异常情况下需要活动参考,例如UserRecoverableAuthIOException.
这是我无法理解的问题.这是一些try/catch代码:
try {
//...drive api stuff here
} catch (UserRecoverableAuthIOException e) {
possibleException = e;
try {
e.getIntent();
} catch ( NullPointerException e2 ) { //this is the crazy part
// e.getIntent() should not throw a nullpointer
e2.printStackTrace();
possibleException = e2;
}
onActivityRestartWhat = RESTART_IMPORT;
// just a note i do handle this exception properly in another section of a code when there is an intent.
} catch (FileNotFoundException e) {
possibleException = e;
e.printStackTrace();
} catch (IOException e) {
possibleException = e;
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我想不通的是,为什么UserRecoverableAuthIOException被抛出NullPointerException乳清我尝试接入getIntent.
UserRecoverableAuthIOException当需要更多身份验证时我会抓住并通过该startActivityForResult方法请求它.此外,仅当我退出已启动的活动(即销毁活动)时,才会抛出此异常.基本上,我有一个进程,在一个线程中上传/下载驱动文件,如果我不离开活动,直到完成它的工作,如果我通过后退按钮销毁活动,那么我得到这个例外.
07-10 14:45:32.903: W/System.err(1450): java.lang.NullPointerException
07-10 14:45:32.913: W/System.err(1450): at android.content.Intent.<init> (Intent.java:3529)
07-10 14:45:32.913: W/System.err(1450): at com.google.android.gms.auth.UserRecoverableAuthException.getIntent(Unknown Source)
07-10 14:45:32.913: W/System.err(1450): at com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException.getIntent(UserRecoverableAuthIOException.java:62)
07-10 14:45:32.913: W/System.err(1450): at my.app.DriveHelper$2.run(DriveHelper.java:211)
Run Code Online (Sandbox Code Playgroud)
我想在后台线程中运行下载/上传(通过谷歌驱动器).由于sdk需要startActivityForResult和其他方法可能需要引用Activity或Context使其变得困难,但是一旦应用程序被授予了需要这些引用的sdk权限,它就应该工作.希望这是有道理的.
以下是您可以按照正确处理异常的步骤UserRecoverableAuthIOException,甚至可以避免在按下后退时出现该异常。
在某些情况下,如果您收到该错误,则意味着该活动已被破坏,因此您不应依赖该活动
com.google.api.services.tasks.Tasks从
Context或Service不是直接从任何对象创建新对象Activity,如“tasks-android-sample”中所示当你遇到异常时
PendingIntent您需要显示来自以下内容的通知Service
PendingIntent应该包含对 Activity 的引用,例如 HomeActivity
活动应该处理额外的意图,并且应该执行所需的操作,例如显示选择帐户对话框
您可以在此处查看示例代码(GoogleTasksService)
| 归档时间: |
|
| 查看次数: |
2307 次 |
| 最近记录: |