Wie Sie programmgesteuert verschieben , kopieren von Dateien auf SD?

Mache ich eine android app, die ermöglicht dem Benutzer, übertragen Sie Dateien vom internen Speicher auf externe Speichermedien(SD-Karte) mit SAF.

Dies ist, wie ich Sie nennen Absicht, damit der Benutzer wählen Sie die SD-Karte-Verzeichnis.

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        startActivityForResult(intent, 42);

Und das ist mein onActivityResult

 public  void onActivityResult(int requestCode, int resultCode, Intent data) {      
          treeUri = data.getData();
        final int takeFlags = data.getFlags()
                    & (Intent.FLAG_GRANT_READ_URI_PERMISSION
                    | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            getActivity().getContentResolver().takePersistableUriPermission(treeUri, takeFlags);

    }

Nehme ich die Erlaubnis für die gesamte SD-Karte, so dass ich verschieben Sie oder löschen Sie jede Datei in sd-Karte jeder Zeit .Das problem ist, dass selbst nach der Einnahme Erlaubnis ich bin nicht in der Lage zu verschieben oder zu löschen, eine Datei in SD-Karte.

Wie soll ich eine Datei verschieben vom internen Speicher auf den externen(SD-Karte) für android 5.0 und oben.

EDIT:Dies ist der code, den ich benutze, um Dateien zu verschieben.

public static void MoveFiles(File src, File dst) throws IOException
{
    FileChannel inChannel = new FileInputStream(src).getChannel();
    FileChannel outChannel = new FileOutputStream(dst).getChannel();
    try
    {
        inChannel.transferTo(0, inChannel.size(), outChannel);
    }
    finally
    {
        if (inChannel != null)
            inChannel.close();
        if (outChannel != null)
            outChannel.close();
           src.delete();

    }
}
  • "Das problem ist, dass selbst nach der Einnahme Erlaubnis ich bin nicht in der Lage zu verschieben oder zu löschen, eine Datei in SD-Karte" -- haben Sie Sie nicht gezeigt-code für "verschieben oder löschen Sie eine Datei in SD-Karte", und Sie haben nicht erklärt, was das eigentliche problem ist (z.B., Java-stack-trace).
  • Sie haben natürlich diese Berechtigungen Hinzugefügt, in der manifestfile?
  • ich habe bearbeitet Sie meine Frage.
  • ich habe lese-und Schreibzugriff externe Speicher Genehmigung in meinem manifest.
  • intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);. Aussage macht keinen Sinn. Besser entfernen Sie es.
  • Danke werde es entfernen.

InformationsquelleAutor Rahulrr2602 | 2016-12-19
Schreibe einen Kommentar