Android存储媒体的内容URI或文件系统路径
我有一个应用程序,允许用户选择一个媒体文件用作警报。我像这样查询Android存储媒体的内容URI或文件系统路径,android,android-contentprovider,android-mediaplayer,android-contentresolver,Android,Android Contentprovider,Android Mediaplayer,Android Contentresolver,我有一个应用程序,允许用户选择一个媒体文件用作警报。我像这样查询MediaStore: String[] projec = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME}; Cursor c = getActivity().getContentResolver() .
MediaStore
:
String[] projec = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME};
Cursor c = getActivity().getContentResolver()
.query(internalOrExternal, projec, null, null, null);
其中,internalOrExternal
是一个参数,它可以是MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI
或MediaStore.Audio.Media.INTERNAL\u CONTENT\u URI
我使用MediaStore.Audio.Media.DATA
列中的值,如果它以content://
开头,否则我调用MediaStore.Audio.Media.getContentUriForPath(c.getString(MediaStore.Audio.Media.DATA))
,如果结果以content://
开头,我使用该值
加载保存媒体URI的数据结构时,我会对照MediaStore
检查URI,以确保它仍然存在,如果不存在,我会将其设置为默认警报(保证存在)
最近,我有一些用户(都使用三星设备)抱怨说,每隔几周,他们的所有警报都设置为使用默认警报,即使他们设置为使用自定义警报(在一个用户的情况下,超过40个警报恢复为默认警报)。他们向我保证,他们没有清除数据,也没有做任何会影响应用程序存储的事情(有人告诉我,这是在升级到Android 4.3之后发生的)
某些供应商是否可能重新分配其内容URI?我是否应该存储内容URI或文件系统路径,并在播放警报时将其解析为内容URI?我认为MediaStore只封装了它可以访问的媒体文件,而不是原始提供商,只是一个中间人。我相信,只要用户的手机更新,手机的文件系统就会被重新索引,这可能会导致更新问题