6

Environment.getExternalStoragePublicDirectory() の Javadocの例では言及されていますContext.getExternalMediaDir()が、このメソッドは私の Android API バージョンでは使用できず、どのバージョンのどこにも文書化されていません。これはタイプミスですか、それともリリースに至らなかったものですか?

void createExternalStoragePublicPicture() {
    // Create a path where we will place our picture in the user's
    // public pictures directory.  Note that you should be careful about
    // what you place here, since the user often manages these files.  For
    // pictures and other media owned by the application, consider
    // Context.getExternalMediaDir().
    File path = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
4

2 に答える 2

5

いいえ、それは(もう)タイプミスではありません。Android L Preview の新しいメソッドです

基本的に、Google の天才は「.nomedia」ファイルを /Android/data/ フォルダー内に配置します。これにより、フォルダー内で MediaScannerConnection scanFile() メソッドを使用しようとすると失敗します。したがって、メディアを作成またはダウンロードするアプリを持っている場合、新しい API を持っていない限り、メディアをスキャンしてプロバイダーで利用できるようにするために、おそらくアクロバットを行っていることでしょう。もっと古いアンドロイド...

今のところ、私たちの回避策は、ファイルを自分でスキャンし、それに一致するコンテンツ プロバイダーに挿入することです。

たとえば、画像の場合、 MediaStore.Images.Media.insertImage (ContentResolver cr、String imagePath、String name、String description)を使用できるメソッドが既にあります。

今日のディスカッションでこのソリューションを投稿し、数分後、Google のエンジニアが Context.getExternalMediaDir() について教えてくれました。これにより、MediaScanning に適したセカンダリ外部ストレージ (別名、Sd カード) のプライベート パスが得られると思われます。

「新しい android.content.Context.getExternalMediaDirs() は、すべての共有ストレージ デバイス上のこれらのディレクトリへのパスを返します。」

私の推測では (私はテストしていません)、ディレクトリ パスは次のようなものになるでしょう。

/ストレージ/extSdCard/アンドロイド/メディア/

SD カードの使用に関する開発上の意思決定を管理し始めた人は誰であろうと、本当のばかです。ここ数週間の Google-Android で見たように、悪い判断、下手な意思決定、およびクソの量は、Microsoft を思い出させ始めています。 .

于 2014-07-10T18:47:51.230 に答える
4

名前が間違っているだけだと思います。彼らは「 」と言うつもりだったと思いますContext.getExternalFilesDir()。これはタイプミスであるか、メソッドの名前が後で変更された可能性があります。

コメントの説明 (「アプリケーションが所有する画像やその他のメディア」) に基づいて、「アプリケーションが所有する永続ファイルを配置できる場所getExternalFilesDir(String type)」の説明とほぼ一致します。ルート ディレクトリを返す に渡すことも、探しているフォルダの種類を返すように指定することもできますnullgetExternalFilesDir

私はここでいくらか推測しています。ただし、これは、この一見存在しない方法の最も可能性の高い説明のようです。

于 2012-08-10T20:01:50.293 に答える