2017-08-28 5 views
-4

ich Daten von meinem Service: IchFileNotFoundException: EACCES (Permission denied)

 JSONObject userGuid = new JSONObject(); 
     userGuid.put("userGuid", id); 
     Bitmap bitmap = null; 
     String response = HttpUtil.post(mService + "GetUser", userGuid.toString(), mCookie); 

     JSONObject result = new JSONObject(response).getJSONObject("User"); 
     String temp = result.getJSONArray("UserImage").toString(); 

in empfangenen Daten, gibt es eine Base64 Bild Benutzer und ich habe es und wandelt es in arryByte und dann wandelt es in Input:

 byte[] tmp = Base64.decode(temp, Base64.DEFAULT); 
     InputStream is = new ByteArrayInputStream(tmp); 

ich es auf eine Datei schreiben möchten von output:

OutputStream os = new FileOutputStream(f); 

aber ich habe diesen Fehler:

java.io.FileNotFoundException: /storage/emulated/0/fcImages/581864034: open failed: EACCES (Permission denied) 

In Manifest Ich habe diese Berechtigungen:

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

Was ist Ihre Idee?

bearbeiten Ich erstelle Datei auf diese Weise:

public class FileCache { 

private File cacheDir; 

public FileCache(Context context) { 

    if((Environment 
      .getExternalStorageState()).equals(Environment.MEDIA_MOUNTED)) { 
      cacheDir = new File(Environment.getExternalStorageDirectory(), "fcImages"); 
    } else { 
     cacheDir = context.getCacheDir(); 
    } 
    if(!cacheDir.mkdirs()) { 
     cacheDir.mkdirs(); 
    } 
} 

public File getFile(String id) { 
    String filename = String.valueOf(id.hashCode()); 
    File f = new File(cacheDir, filename); 
    return f; 
} 
+1

Hexe Android OS Version Sie testen ?? –

+0

Ich benutze api 23 – sayres

+3

Wahrscheinlich müssen Sie dies lesen. Sie müssen um Erlaubnis in Ihrem Code bitten, bevor Sie versuchen, es zu benutzen :). https://developer.android.com/training/permissions/requesting.html –

Antwort

1

Es gibt 3 Dinge, die in meinem Kopf kommen zu überprüfen:

  1. verwendet Zulassungs-Tag ist innerhalb manifest-Tag (und nicht Anwendungstag)
  2. EACCESS kann aufgrund der Tatsache, dass fcImages Verzeichnis nicht existiert, oder es ist eine Datei
  3. Erlaubnis für Android api 23 muss Runtime

Quelle für (1) ist diese answer, während Quelle für (3) ist diese answer

+0

verwendet die Berechtigung ist außerhalb meines Manifests: ' ' – sayres

+0

Ich verstehe nicht, wenn Sie Ihr Problem gelöst haben oder nicht. Ich bin ziemlich sicher über die zweiten Gründe (eine Erlaubnis wird einen Erlaubnis-Fehler werfen) –

+0

Ich habe ein Problem. Ich sah, dass 'fcImages' Datei erstellt wurde – sayres

0

Wenn Sie schreiben die Datei auf die Anwendung der internen angefordert werden Lager. Versuchen Sie folgendes:

Beispiel 1:

java.io.File xmlFile = new java.io.File((getActivity() 
     .getApplicationContext().getFileStreamPath("FileName.xml") 
     .getPath())); 

Auch das Manifest Erlaubnis richtige Art und Weise geben, wie unten:

Beispiel 2:

<manifest> 
     <uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
     ... 
     <application> 
      ... 
      <activity> 
       ... 
      </activity> 
     </application> 
</manifest> 
Verwandte Themen