2016-10-08 9 views
0

私はSDカード内のファイルをC++ Android NDKで移動しようとしています。ユーザーがデバイス内のファイルを選択できるようにするため、dirent.hヘッダーを使用していますメソッドからのJavaからのSDパスEnvironment.getExternalStorageDirectory()プログラムで記憶を有効にする

Android 4.4.2を搭載したBlueStacks(Windows 10)でテストすると、ファイル名が正しく読み取られますが、Android搭載のNexus 6pでテストすると7それは失敗し、それは私に意味はerrno = 13、与える:以下の記事に

#define EACCES  13 /* Permission denied */ 

が、私はそれがなぜ起こるかの理由を見つけることができるし。

https://stackoverflow.com/a/36336679/5166295

ので、そのオプションを有効にする任意のプログラムで方法はありますか?

私はアプリをデバッグしている間だけですか、最終版(APK付き)ではこれは消えてしまいますか?

または、シンボリックリンクではなく、元のパスを取得する方法はありますか?

または、そのオプションを手動で有効にするようにユーザーに指示する必要はありますか?

+0

あなたは 'マニフェストファイルにREAD_EXTERNAL_STORAGE'許可使用していますか? –

+0

はい、私はREADとWRITEの両方を持っています – quetzalfir

+0

'READ'は意味がありません。' WRITE'は 'READ'を意味するからです。 –

答えて

0

今、彼らは、実行時のアクセス権の形を持っている、とあなたはあなたがそれを使用しようとしているとき、それはので、許可を求める必要はあり、Androidの6以来の権限が変更されているようですアプリのインストール時にデフォルトでは有効になっていません。

https://source.android.com/devices/tech/config/runtime_perms.html

1

私は方法Environment.getExternalStorageDirectory(とJavaからSDパスを取得)

getExternalStorageDirectory()〜20億台のAndroidデバイス上のSDカードとは何の関係もありません。これはexternal storageを指し、removable storageではありません。

このオプションを有効にするプログラム的な方法はありますか?

Javaコードはrequest READ_EXTERNAL_STORAGE or WRITE_EXTERNAL_STORAGE at runtimeです。私はNDKから直接これを要求する方法があるとは思わない。

これは私がアプリをデバッグしている間だけで、最終版(APK付き)では消えてしまいますか?

号は

関連する問題