私の問題はすでに何回も取り組まれてきたことは知っていますが、私の特定の問題を助けてくれるものは見つかりませんでした。async-httpファイルアップロード用のファイルを選ぶ(ファイルパスへのURL)
私はどこでもシステムからファイルを選択する意図を持っている:
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();
}
をし、私のようなアップロード方法を持っていますso:
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) {
}
});
}
問題は、AsyncHttpClientが使用できるようにインテントから取得した情報をどのように処理するかわからないため、2つのメソッドonActivityとアップロードを「結婚」する方法がわかりません。
私はUriを絶対パスに変換しようとしましたが、管理することはできませんでした(画像の場合は特に問題なく動作するソリューション)。私はまた、uriをファイルに "変換"することもできません。
私はこれを行うことができますか?何か不足していますか?
はい、ありがとうございます。Async-Httpでは、ファイルではなく入力ストリームが許可されています。 – hachel