2016-04-06 14 views
0

Environment.getExternalStorageDirectory()からSoundPoolにファイルをロードしようとしています。ファイルが存在しますが、ロードしようとするとまだファイルがあります。エミュレータの外部ストレージからファイルを読み取ることができません

E/SoundPool: error loading /storage/emulated/0/dialpad/sounds/mamacita_us/one.mp3 

実際のデバイスでは、全く同じパスから完全に動作します。

これは私がファイルをロードするために使用しているコードです:

if(isExternalStorageReadable()){ 
    String externalStorageAbsolutePath = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    String soundFilesPath = (new File(externalStorageAbsolutePath, "dialpad/sounds/mamacita_us")).getPath(); 

    Log.d("DEBUG", (new File(soundFilesPath, "one.mp3")).getAbsolutePath()); 
    Log.d("DEBUG", (new File(soundFilesPath, "one.mp3")).exists() ? "EXISTS" : "DOES NOT EXSIST"); 

    sounds.put("1", soundPool.load((new File(soundFilesPath, "one.mp3")).getAbsolutePath(), 1)); 
    sounds.put("2", soundPool.load((new File(soundFilesPath, "two.mp3")).getPath(), 1)); 
} 

isExternalStorageReadable()は、ヘルパーメソッドです:

public boolean isExternalStorageReadable() { 
    String state = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_MOUNTED.equals(state) || 
      Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     return true; 
    } 
    return false; 
} 

LogCat出力は私が持っていた

D/DEBUG: /storage/emulated/0/dialpad/sounds/mamacita_us/one.mp3 
D/DEBUG: EXISTS 

を言いますおそらくそれはファイルの許可の問題だったというアイディアですが、私は知らないのです... ls -l in adb shell

-rw-rw---- root  sdcard_rw 18288 2009-07-06 13:42 one.mp3 
-rw-rw---- root  sdcard_rw 21422 2009-07-06 13:44 two.mp3 

chmodを使用してパーミッションを変更しようとしたことがありますが、彼らは決して変わらない私に与えます。私はadb pushを使用してファイルをエミュレータにプッシュしました。

これを解決する方法はありますか?私が言ったように、同じパスのための実際のデバイスでは完全に動作しているので、これはGenymotionエミュレータやファイルシステムの問題と思われます。エミュレータはAndroid 6.0(API23)を実行しています。

ああ、そう私は私のマニフェストに

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

を宣言しています。

答えて

0

READ_EXTERNAL_STORAGEは、Android 6.0で導入された新しいランタイムアクセス許可モデルでは「危険なアクセス許可」とみなされます。

外部ストレージへのアクセス権を要求する必要があります。

お使いの端末はおそらくAndroidバージョン< 6.0を実行しているため、許可を求めることなくそのデバイスで動作します。

http://developer.android.com/guide/topics/security/permissions.html#normal-dangerous

関連する問題