我已经成功使用
getContentResolver().takePersistableUriPermission(myUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
允许在重新启动后访问文档(之前使用 ACTION_OPEN_DOCUMENT 获得)。
但我想知道如果失败会发生什么,因为没有返回值并且没有记录的异常(已检查或以其他方式),如下所示:docs。
然而,当搜索 SO 时,我发现实际上这里有一个
SecurityException
可能显示:
例外。而且很可能存在错误,例如提供的 URI 无效 - 或文档不再存在等。
所以问题是如何正确处理这次通话中显然可能出现的 undocumented
RuntimeException
。这些是唯一有效的方法吗?
(一)
try {
getContentResolver().takePersistableUriPermission(myUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
} catch (SecurityException e) {
// handle failure to get persistable permission though NOT DOCUMENTED
}
(B)
try {
getContentResolver().takePersistableUriPermission(myUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
} catch (Exception e) {
// handle failure to get persistable permission
}
更具体地说,有什么方法可以从这次通话中找出所有可能的
RuntimeException
?
这些是唯一有效的方法吗?
您可以抓住
Throwable
而不是 SecurityException
或 Exception
。但是,一般来说,try
/catch
是你捕捉抛出的任何东西的方式。
更具体地说,有什么方法可以从这次通话中找出所有可能的
?RuntimeExceptions
不现实。 Android 设备型号有数以万计,其中任何一个都可能包含对 Android 的修改,这些修改会影响
takePersistableUriPermission()
背后的代码路径抛出的内容。