Java libcore.io.ErrnoException:open失败:enoint(没有这样的文件或目录)
我想从gallery(我代码的第一部分)中选择一个视频文件,并使用Java libcore.io.ErrnoException:open失败:enoint(没有这样的文件或目录),java,android,Java,Android,我想从gallery(我代码的第一部分)中选择一个视频文件,并使用改装将其上载到服务器-请忽略此问题。因此,我想将一个文件从第一部分传递到第二部分,但它给出了标题中提到的错误 main活动: public class MainActivity extends Activity { private static int RESULT_LOAD_VIDEO = 1; String decodableString; @Override protected void o
改装
将其上载到服务器-请忽略此问题。因此,我想将一个文件从第一部分传递到第二部分,但它给出了标题中提到的错误
main活动
:
public class MainActivity extends Activity
{
private static int RESULT_LOAD_VIDEO = 1;
String decodableString;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btn_load = (Button) findViewById(R.id.buttonLoadVideo);
btn_load.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
loadVideoFromGallery(btn_load);
}
});
}
/*
* PICK THE VIDEO AND EXTRACT ITS ADDRESS
*/
public void loadVideoFromGallery(View view)
{
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, RESULT_LOAD_VIDEO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
try {
// When a video is picked
if (requestCode == RESULT_LOAD_VIDEO && resultCode == RESULT_OK
&& null != data)
{
// Get the video from data
Uri selectedVideo = data.getData();
String[] filePathColumn = { MediaStore.Video.Media.DATA };
Cursor cursor = getContentResolver().query(selectedVideo,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
decodableString = cursor.getString(columnIndex);
Log.i("mok","ds: " + decodableString);//ds: /storage/extSdCard/DCIM/Camera/20151112_142950.mp4
Log.i("mok","svp: " + selectedVideo.getPath());//svp: /external/video/media/253
Log.i("mok","fpc0: " + filePathColumn[0]);//fpc0: _data
cursor.close();
File file = new File(selectedVideo.getPath());
upload(file);
} else
{
Toast.makeText(this, "You haven't picked any video",
Toast.LENGTH_LONG).show();
}
} catch (Exception e)
{
e.printStackTrace();
Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG)
.show();
}
}
/*
* UPLOAD THE SELECTED VIDEO TO THE SRVER
*/
public void upload(File file)
{
final String BASE_URL = "http://192.168.1.7/";
Retrofit retrofit = new Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
UploadApiService service = retrofit.create(UploadApiService.class);
MediaType MEDIA_TYPE = MediaType.parse("video/mp4");
RequestBody requestBody = RequestBody.create(MEDIA_TYPE, file);
Call<ResponseBody> call = service.uploadVideo("desc", requestBody);
call.enqueue(new Callback<ResponseBody>(){
@Override
public void onResponse(Response<ResponseBody> response, Retrofit retrofit)
{
// TODO Auto-generated method stub
if (response.isSuccess())
{
Log.i("mok","S");
ResponseBody rb = response.body();
}
else
{
Log.i("mok","F");
com.squareup.okhttp.ResponseBody rb = response.errorBody();
}
}
@Override
public void onFailure(Throwable t)
{
t.printStackTrace();
Log.i("mok",t.getCause()+"");
Log.i("mok","T");
finish();
}
});
}
}
公共类MainActivity扩展活动
{
私有静态int结果\加载\视频=1;
线绳剥落;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终按钮btn_加载=(按钮)findViewById(R.id.ButtonLoad);
btn_load.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
从画廊下载视频(btn_加载);
}
});
}
/*
*选择视频并提取其地址
*/
公共void loadVideoFromGallery(视图)
{
Intent gallerycontent=新意图(Intent.ACTION\u PICK,
android.provider.MediaStore.Video.Media.EXTERNAL\u CONTENT\u URI);
startActivityForResult(GalleryContent、RESULT\u LOAD\u VIDEO);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据)
{
super.onActivityResult(请求代码、结果代码、数据);
试一试{
//拾取视频时
如果(requestCode==RESULT\u LOAD\u VIDEO&&resultCode==RESULT\u OK
&&空!=数据)
{
//从数据中获取视频
Uri selectedVideo=data.getData();
字符串[]filePathColumn={MediaStore.Video.Media.DATA};
Cursor Cursor=getContentResolver().query(selectedVideo,
filePathColumn,null,null,null);
cursor.moveToFirst();
int columnIndex=cursor.getColumnIndex(filePathColumn[0]);
decodableString=cursor.getString(columnIndex);
Log.i(“mok”,“ds:+decodablesting);/ds:/storage/extSdCard/DCIM/Camera/20151112_142950.mp4
Log.i(“mok”,“svp:+selectedVideo.getPath());//svp:/external/video/media/253
Log.i(“mok”,“fpc0:+filePathColumn[0]);//fpc0:\u数据
cursor.close();
File File=新文件(selectedVideo.getPath());
上传(文件);
}否则
{
Toast.makeText(这是“你还没有选择任何视频”,
Toast.LENGTH_LONG).show();
}
}捕获(例外e)
{
e、 printStackTrace();
Toast.makeText(这个“出错了”,Toast.LENGTH\u LONG)
.show();
}
}
/*
*将所选视频上载到SRVER
*/
公共无效上载(文件)
{
最终字符串BASE_URL=”http://192.168.1.7/";
改装改装=新建筑商()
.baseUrl(基本URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
UploadApiService服务=改装.create(UploadApiService.class);
MediaType MEDIA_TYPE=MediaType.parse(“视频/mp4”);
RequestBody RequestBody=RequestBody.create(媒体类型,文件);
Call Call=service.uploadVideo(“desc”,requestBody);
call.enqueue(新回调(){
@凌驾
公共响应(响应、改装)
{
//TODO自动生成的方法存根
if(response.issucess())
{
Log.i(“mok”、“S”);
ResponseBody rb=response.body();
}
其他的
{
Log.i(“mok”、“F”);
com.squareup.okhttp.ResponseBody rb=response.errorBody();
}
}
@凌驾
失效时的公共无效(可丢弃的t)
{
t、 printStackTrace();
Log.i(“mok”,t.getCause()+”);
Log.i(“mok”、“T”);
完成();
}
});
}
}
只是我不得不使用文件File=new文件(decodableString)
。错误已消失(问题已回答),因此我发布了此答案,但上载文件的解决方案工作不正常(这是另一个问题)。我只需使用file file=new file(decodableString)
。错误已经消失(问题已经回答),所以我发布了这个答案,但是上传文件的解决方案没有正常工作(这是另一个问题)