2016-07-09 21 views
0

Das Problem ist Bild auf dem Speicher Dieser Code hat gut funktioniert zu sparen, aber nicht mit Android 6 und NSaving image Datei

Was muss ich hier beheben? Oder als Option - mit einem anderen Beispiel für

interne \ externe Dateien speichern
public void saveImage(Bitmap icon) { 

     File ff;   
     File file = new File(android.os.Environment.getExternalStorageDirectory(), "Folder Name"); 

     ff = new File(file.getAbsolutePath() + file.separator + imageName + ".jpg"); 
     if(ff.exists()){ 

      Log.i("sharing", "File exist SD"); 
     } else{ 
     try { 
      File f = null; 
      if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { 

       if (!file.exists()) { 
        file.mkdirs(); 
       } 
       Log.i("sharing", "File exist Internal"); 
       f = new File(file.getAbsolutePath() + file.separator + imageName + ".jpg"); 
      } 
      FileOutputStream ostream = new FileOutputStream(f); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream); 
      ostream.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 

    } 

und Berechtigungen von Manifest:

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

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

Thanx

+1

Haben Sie mit dem neuen Berechtigungssystem nach Berechtigungen gefragt? –

+0

Haben Sie eine Berechtigung hinzugefügt? – phongvan

+0

Sie könnten überlegen, Ihre Frage zu bearbeiten und im Detail zu erklären, was "Dieser Code hat gut funktioniert, aber nicht mit Android 6 und N" bedeutet. Was sind deine spezifischen Symptome? Stürzen Sie zum Beispiel ab? Haben Sie LogCat untersucht? – CommonsWare

Antwort

0

Ich habe Berechtigungen für android sdk> 22

Dieser Code diese in Ihre Aktivitätsklasse implementieren funktioniert einwandfrei

if (ContextCompat.checkSelfPermission(HomeActivity.this, 
          Manifest.permission.WRITE_EXTERNAL_STORAGE) 
          != PackageManager.PERMISSION_GRANTED) {            
          ActivityCompat.requestPermissions(HomeActivity.this, 
            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},23 
            ); 

        } 
0

Sie sollten den Uses-Erlaubnis-sdk- setzen 23 Markieren und setzen Sie die gewünschte Berechtigung.

Dann Sie sollten überprüfen, ob die Genehmigung erteilt wird oder nicht, indem die checkSelfPermission Aufruf und die Erlaubnis Namen als Argument

geben Wenn die Erlaubnis nicht erteilt wird, sollten Sie die Berechtigungen erlangen, indem die requestPermissions Methode aufrufen und übergeben die Berechtigungen Namen als String-Array und dem Anforderungscode

nach diesem ein Dialog Benutzer wird ihnen gezeigt, und fragen, ob die Erlaubnis oder nicht

Dann wird eine Schnittstelle gewährt wird onRequestPermissionResult w krank bezeichnet werden, und Sie sollten

Nach diesem Sie können den Zugriff auf die angeforderten Berechtigungen erlangen, wenn der Benutzer es

gewährt