2012-03-29 5 views
1

Ich versuche, eine Datei auf den externen Speicherort auf Android zu schreiben. Hier ist mein Code:Android: Berechtigung verweigert beim Erstellen einer neuen Datei im externen Speicher

String state = Environment.getExternalStorageState(); 

if(Environment.MEDIA_MOUNTED.equals(state)) { 
    saveState= true; 
    File pPath= Environment.getExternalStorageDirectory(); 

    if(!pPath.exists()) { 
      boolean bReturn= pPath.mkdirs(); 
      Log.d(TAG, "mkdirs returned: " + bReturn); 
    } 
    try { 
      File pFile= new File(pPath, "output.pcm"); 
      pFile.createNewFile(); 
      outputLocation= pFile.getAbsolutePath().toString(); 
    } catch (IOException e) { 
      Log.d(TAG, "Could not create file: " + e.toString()); 
      saveState= false; 
    } 
} // end if we can read/write to the external storage 

Der Aufruf von CreateNewFile() gibt "Konnte Datei erstellen: java.io.IOException: Zugriff verweigert"

ich die android.permission.WRITE_EXTERNAL_STORAGE in meinem Manifest-Datei haben . Es scheint eine Menge Fragen zu diesem Problem zu geben, und das hat die meisten von ihnen gelöst, aber ich habe immer noch dieses Problem. Hier ist ein Teil des Manifests:

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="company.example.sample" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 
    <permission android:name="android.permission.RECORD_AUDIO"></permission> 
    <permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></permission> 
    <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></permission> 

Irgendwelche Ideen?

Antwort

7

Ersetzen Sie Ihre <permission> Elemente mit <uses-permission> Elementen:

<uses-permission android:name="android.permission.RECORD_AUDIO"/> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

<permission> definiert eine neue Erlaubnis; <uses-permission> zeigt an, dass Sie eine Genehmigung besitzen möchten.

+0

Wow, das war es. Ist mein Gesicht nicht rot? –

+2

@rotaludom: Nun, eigentlich kann ich nicht sagen, welche Farbe dein Gesicht gerade hat. Könntest du dich ein bisschen nach links drehen? Nein, nein, dein anderer ist gegangen. Ah, ja, dein Gesicht ist ein bisschen rot. Es war nur schwer zu sagen, bis Sie sich der versteckten Webcam zuwandten. Froh, dass wir das geklärt haben! :-) – CommonsWare