我正在尝试使用新的Storage Access Framework但是在保存打开的文件时会出现间歇性问题。这就是我正在做的事情。
要选择文件,我使用ACTION_OPEN_DOCUMENT
,如下所示:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("audio/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, 1);
然后在onActivityResult()
:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
uri = data.getData();
final int takeFlags = data.getFlags() & Intent.FLAG_GRANT_READ_URI_PERMISSION;
getContentResolver().takePersistableUriPermission(uri, takeFlags);
...
}
这似乎在大多数情况下都有效,即uri被持久化,即使重启后我也可以打开文件。但是,情况并非总是如此,并非所有设备都没有。我让一些用户抱怨他们在重启手机后无法打开文件,必须再次选择它。
我可以在升级应用时模拟此处的问题。有时升级后,似乎持久性会丢失。但它又是间歇性的,因此很难找出可能出现的问题。
有什么想法吗?