ContentResolver.takePersistableUriPermission() 没有记录可能的错误,但显然可能会发生

问题描述 投票:0回答:1

我已经成功使用

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

android android-contentresolver
1个回答
0
投票

这些是唯一有效的方法吗?

您可以抓住

Throwable
而不是
SecurityException
Exception
。但是,一般来说,
try
/
catch
是你捕捉抛出的任何东西的方式。

更具体地说,有什么方法可以从这次通话中找出所有可能的

RuntimeExceptions

不现实。 Android 设备型号有数以万计,其中任何一个都可能包含对 Android 的修改,这些修改会影响

takePersistableUriPermission()
背后的代码路径抛出的内容。

© www.soinside.com 2019 - 2024. All rights reserved.