Я знаю, что моя проблема уже решена несколько раз, но я не мог найти ничего, что помогло бы мне с моей конкретной проблемой.сбор файла для загрузки файла async-http (uri to file path)
У меня есть намерение, чтобы выбрать файл в любом из системы:
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"),
FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
Я поднимаю это намерение здесь:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case FILE_SELECT_CODE:
if (resultCode == RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData();
}
и у меня есть метод загрузки, как так:
private void upload(File file){
RequestParams params = new RequestParams();
try {
params.put("fileToUpload", file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
AsyncHttpClient client = new AsyncHttpClient();
client.post("http://...", params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
System.out.println("statusCode "+statusCode);//statusCode 200
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
}
});
}
проблема заключается в том, что я не знаю, как «жениться» на двух методах onActivity и upload, потому что я не знаю, как обрабатывать информацию, которую я получаю от намерения, чтобы AsyncHttpClient мог ее использовать.
Я попытался преобразовать Uri в абсолютный путь, но не мог управлять (решения в Интернете, которые, похоже, работали там, где специально для изображений). Я также не могу «преобразовать» uri в файл.
В любом случае я мог бы это сделать? Я что-то упускаю?
Да, спасибо, Async-Http позволяет использовать входной поток вместо файла. – hachel