2016-11-07 7 views
0

私の質問はちょっと単純ですが、私はインターネットからたくさん検索しますが、答えを見つけることができません。NDK APIを使用したAndroidでのリムーバブルストレージへのアクセス

Iは

コード以下
String ExternalSdcardPath = System.getenv("SECONDARY_STORAGE") + "/Sample/"; 

と二次リムーバブルストレージ(SDカード)の経路を得ることができると私は、この、/ストレージ/ external_SD /サンプル/

ような経路を得ることができると私が作成しようとしました(のfopen(ExternalSdcardPath、 "A +");)NDKのAPIを使用してファイル

が、私は、関数fopenでファイルを作成し、読み取ることができませんでした。..

あなたはどのようにCに教えてくださいすることができますリロードして、リムーバブルパス(secondary_storage)のfopen apiでファイルを読み込みますか?

答えて

2

私はコードの下

で二リムーバブルストレージ(SDカード)のパスを取得することができ、その環境変数が存在するために必要は意味のあるものにのみポイントを聞かせて、ありません。

私は、あなたは、Android 4.4以降のリムーバブルストレージ上の任意の場所への直接フ​​ァイルシステムへのアクセスを持っていないのfopen

でファイルを作成し、読み取ることができませんでした。

あなたはリムーバブルパス(secondary_storage)にfopen apiファイルを作成して読み込む方法を教えてください。

リムーバブルストレージへの直接フ​​ァイルシステムへのアクセスのためのあなたの唯一の場所はgetExternalFilesDirs()getExternalCacheDirs()、およびgetExternalMediaDirs()によって返された場所です。これらはすべてContextのメソッド(アクティビティやサービスなど)です。 2つ以上の値を返す場合、2つ目以降の値はリムーバブルストレージに格納されます。 Javaコードは、これらのパスをNDKコードに提供できます。

+0

ありがとうございました!私はあなたが言ったことをテストし、リムーバブルパス(ファイル[]ファイル= getExternalFilesDirs( "");と文字列パス=ファイル[1] .getAbsolutePath()、sdcard/Android/data/myパッケージフォルダ)私のNDKコードと一緒にストレージpacakgeフォルダ。 他のパス、sdcard/test_folder(パッケージフォルダではない)へのアクセス権と書き込み権限と読み取り権限は必要ですか? –

+0

@ Ji.Hoon.Kim:私が答えて書いたように、Android 4.4以降では、リムーバブルストレージ上の任意の場所(例: 'sdcard/test_folder 'となっているもの)に直接ファイルシステムでアクセスすることはできません。 – CommonsWare

+0

SAF(DocumentFile API、Android 5.0.1以降、Lollipop)を使用して、リムーバブルストレージ上の任意の場所に直接ファイルシステムでアクセスできます。 Android 5.0.1以降でSAF Google UIなしでSAFを使用できますか? –

関連する問題