我想使用createChooser从URI路径获取绝对路径。我该怎么办?如果您知道解决此问题的解决方案,请告知我。顺便说说, URI路径显示遵循路径:
content://com.android.providers.media.documents/document/audio%3A38
正常路径显示遵循路径:
/document/audio:38
这是我的代码:
public void set_music_path(View view) {
Intent intent = new Intent();
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "음악을 선택해주세요."), 1);
}
protected void onActivityResult(int req, int res, Intent data){
super.onActivityResult(req, res, data);
Uri uri = data.getData();
Toast.makeText(this, uri.toString(), Toast.LENGTH_SHORT).show();
Toast.makeText(this, uri.getPath().toString(), Toast.LENGTH_SHORT).show();
}
我是韩国学生,所以有一些语法错误。 如果有语法错误,忽视我的错误
答案 0 :(得分:0)
首先,您需要意识到createChooser()
与您从Uri
电话中获取的startActivityForResult()
格式无关。任何ACTION_GET_CONTENT
活动都可以返回它想要的任何有效Uri
。即使您离开了Uri
部分,也可以从startActivityForResult()
来电中获得createChooser()
这种Uri
。
其次,您需要意识到ACTION_GET_CONTENT
不是文件。 Uri
个活动可以返回Uri
指向活动所需的任何内容。
如果 file
的方案恰好是getPath()
,那么content
将是一个文件系统路径,指向一个(大概)你的文件可以访问。
如果方案是Uri
- 就像这里的情况一样 - 那么BLOB
可以指向任何:
ContentResolver
列中的值,该值不是文件使用openInputStream()
和openOutputStream()
(可能还有Uri
)来处理File
标识的内容。
如果您正在使用某个需要InputStream
的第三方库,请切换到可以使用InputStream
的更好的库。
如果找不到更好的库,则必须使用getCacheDir()
将内容的字节复制到您控制的某个文件中(例如,在body {
background-color: #999;
font-family: times;
}
header {
height: 450px;
background: url(../Pictures/Flensburg.jpg) center center fixed;
background-size: cover;
}
nav {
float: right;
30px 30px 0 0;
}
ul{
display: inline;
align: right;
list-style-type: none;
padding: 10px
}
li {
display: inline-block;
padding: 10px
}
a {
background-color: #b3b3b3;
color: white;
text-transform: uppercase;
}
h1 {
font-size: 72px
width: 100%;
text-align:center;
}
中),然后使用该文件