1

これは私の活動クラスの一部です。以下の Intent を呼び出して、ファイル ピッカー インテントを開き、画像またはビデオを選択します。これはこれまでのところ機能します。

public class Activity extends AppCompatActivity {

    EditText et;
    private static final int PICKFILE_RESULT_CODE = 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // EditText to show filepath after intent
        et = (EditText)findViewById(R.id.et);

        // Start intent to pick a file
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*|video/*");
        startActivityForResult(intent,PICKFILE_RESULT_CODE);
    }

ここで、ファイルのパスを取得します。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(requestCode)
        {
            case PICKFILE_RESULT_CODE:
                if(resultCode==RESULT_OK){

                    // Get path of selected file and set it to editText
                    String filePath = data.getData().getPath();
                    et_upload.setText(filePath);
                }
                break;
        }
    }
}

結果は次のようになります。

"/path/to/file/fileName".

しかし、ファイル拡張子を含めたい:

"/path/to/file/fileName.png"

見逃したものはありますか?

よろしくお願いします。:)

4

2 に答える 2

1

これはこれまでのところ機能します。

setType()|演算子をサポートしていません。

見逃したものはありますか?

まず、パスだけでは意味がありません。ACTION_GET_CONTENTは通常 を返しcontent:// Uri、パスは に対してのみ意味がありContentProviderます。たとえば、これはファイルシステム上のファイルへのパスではありません。

次に、Uriファイル拡張子を含める必要はありません。

それに裏打ちされたコンテンツの MIME タイプを知りたい場合はUri、 aContentResolverそのgetType()メソッドを使用します。その MIME タイプをファイル拡張子に変換する場合はMimeTypeMap .

于 2015-06-09T12:49:05.300 に答える