4

このコードを使用してSDカードをチェックインすると、ファイルがないため、外部ストレージに保存されていると人々が言う理由がわかりません

コードこれ

        OutputStream imageFileOS;
        int imageNum = 0;
        Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        File imagesFolder = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), "Punch");
        if(!imagesFolder.exists()){
            imagesFolder.mkdirs(); // <----
        }
        String fileName = "image_" + String.valueOf(imageNum) + ".jpg";
        File output = new File(imagesFolder, fileName);
        while (output.exists()){
            imageNum++;
            fileName = "image_" + String.valueOf(imageNum) + ".jpg";
            output = new File(imagesFolder, fileName);
        }
        Uri uriSavedImage = Uri.fromFile(output);
        imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);

コードを実行して確認すると、「Internal Memory/Pictures/Punch/image_0.jpg」にファイルがありますが、SD CARD (SD CARD = 外部メモリ カード 16 GB) には表示されません。助けてください..

4

1 に答える 1

2

あなたは何をするのか混乱していると思いますgetExternalStorageDirectory

デバイスの製造元によって指定されたプライマリ ストレージ ディレクトリを取得します。これは通常「sdcard」です。コメントで指定されている「External_sd」は、実際にはセカンダリストレージディレクトリであり、指定されたメソッドでは返されません。

これはまだ保護された内部ストレージではなく、接続時に PC からマウントおよびアクセスできます。

Android ドキュメントから:

注: ここで「外部」という言葉を混同しないでください。このディレクトリは、メディア/共有ストレージと考えるとよいでしょう。これは、比較的大量のデータを保持できるファイル システムであり、すべてのアプリケーションで共有されます (権限を強制しません)。従来、これは SD カードですが、保護された内部ストレージとは別のデバイスに内蔵ストレージとして実装され、コンピュータにファイルシステムとしてマウントできる場合もあります。

于 2012-11-30T11:58:35.003 に答える