8

携帯電話のSDカードを入手する方法を知っている人はいますか?

誰かが私にそのgetExternalStorageDirectory()またはを教えてくれることを私は知っていEnvironment.getExternalStoragePublicDirectory()ます。

残念ながら、すべてのモデルで常に外部 SD カードを指すとは限りません。たとえば、サムスンの 1 つのモデルで試してみましたが、正常に動作しませんでしたが、LG では動作しませんでした。また、ドキュメントによると、常に外部 SD カードとは限りません。

ここにあります、

*「ここで「外部」という言葉を混同しないでください。

このディレクトリは、メディア/共有ストレージと考えるとよいでしょう。これは、比較的大量のデータを保持できるファイルシステムであり、すべてのアプリケーションで共有されます (権限を強制しません)。

伝統的にこれは SD カードですが、保護された内部ストレージとは別のデバイスに内蔵ストレージとして実装され、コンピューターにファイルシステムとしてマウントできる場合もあります。"*

私のアプリケーションでは、ユーザーに SD カードのみを使用してもらいたいと考えています。

どうすればこれを克服できますか?

4

6 に答える 6

2

同じトピックに関する CommonsWare の回答を確認してください https://stackoverflow.com/a/5695129/582571

彼は、モバイルの内蔵外部ストレージとリムーバブル外部ストレージを区別できないと述べています。

しかし、Aleadam の回答https://stackoverflow.com/a/6049446/582571では、外部ストレージがリムーバブルかどうかを isExternalStorageRemovable() 関数で確認することしかできません。

お分かりいただけると思います。

于 2012-07-30T07:00:53.740 に答える
1

リムーバブル ストレージ パスは、デバイスごとに異なります。
リムーバブル パスの例:
1. mnt/ext
2. mnt/externalsd
3. mnt/external_sd


私のデバイスは mnt/external_sd を使用しています。

vold.fstab ファイルからファイルのパスを確認できます。
このファイルは、systems フォルダーの下にあります。
ファイルのパスは次のとおりです。

「/etc/vold.fstab」

于 2013-12-11T06:42:06.357 に答える
-2

次の方法でパスを取得できます.....

File sdCardRoot = Environment.getExternalStorageDirectory();
        PATH = sdCardRoot.toString();

パスが存在しない場合は、mkdir() でパスを作成する必要があります.....

private File getTempFile(Context context) {
        final File path = new File(Environment.getExternalStorageDirectory(),
                context.getPackageName());
        if (!path.exists()) {
            path.mkdir();
        }
        return new File(path, "new.png");
    }

上記の関数はファイルを返します...

于 2012-07-30T06:46:50.330 に答える