このコードを使用して、Intentを使用して任意のタイプのファイルを選択し、アプリケーションでそのパスを取得します
//this when button click
public void onBrowse(View view) {
Intent chooseFile;
Intent intent;
chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
chooseFile.addCategory(Intent.CATEGORY_OPENABLE);
chooseFile.setType("file/*");
intent = Intent.createChooser(chooseFile, "Choose a file");
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) return;
String path = "";
if(requestCode == ACTIVITY_CHOOSE_FILE)
{
Uri uri = data.getData();
String FilePath = getRealPathFromURI(uri); // should the path be here in this string
System.out.print("Path = " + FilePath);
}
}
public String getRealPathFromURI(Uri contentUri) {
String [] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query( contentUri, proj, null, null,null);
if (cursor == null) return null;
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
ファイルブラウザーを開いたときに問題が発生し、ファイルを選択できない場合は、ファイルを押しても有効になっていないようです。何も起こらなかったため、このコードの何が問題になっていますか
i Android mobileからスクリーンショットをアップロードします
画像
前もって感謝します
ファイルのタイプは.txtです
次に、text/plain
をMIMEタイプとして使用します。 Ian Lakeがコメントで述べたように、file/*
は有効なMIMEタイプではありません。
さらに、getRealPathFromURI()
を削除します(機能しません)。 Uri
自体を超えるパスはありません。 Uri
でopenInputStream()
を呼び出すと、このContentResolver
で識別されるコンテンツを読み取ることができ、getContentResolver()
を呼び出すとContentResolver
を取得できますあなたのActivity
。
行を変更します。
chooseFile.setType("file/*");
に
chooseFile.setType( "*/ *");
これは、任意のタイプのファイルを選択するのに役立ちます。
それがうまくいくことを願っています。