Auswhl nur Zip Dateien Intent

wer112

Top Contributor
Ich versuche grade Zip dateien auszuwählen, leider Bekomme ich alle Möglichen Dateien zu Gesicht.
Ich habe ein setType verwendet um es zu fildern, aber es geht leider nicht.

Mein Code:
Java:
Intent zip = new Intent(Intent.ACTION_PICK);
                        zip.setType("application/zip");
                        zip.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);

                        startActivityForResult(zip, 1002);

Wie kann ich NUR Zip Dateien auswählen?
 

Jw456

Top Contributor
Dann schaue dir doch erst mal an was ActionPick ist wozu es gedacht ist.
Damit kann der User eine App Auswählen die sich auf diese Action Registriert hat .
Ob die ausgewählte App auch deinen Filter MimeType unterstütz ist nicht gewiss.
Du weist auch nicht welche App der User benutzt wenn es mehrere mit dieser Action im System gibt.

Schaue dir an wie SAF wirklich geht.
Welche Action da benutzt werden und was da zurück kommt.
 

wer112

Top Contributor
Dann schaue dir doch erst mal an was ActionPick ist wozu es gedacht ist.
Damit kann der User eine App Auswählen die sich auf diese Action Registriert hat .
Ob die ausgewählte App auch deinen Filter MimeType unterstütz ist nicht gewiss.
Du weist auch nicht welche App der User benutzt wenn es mehrere mit dieser Action im System gibt.

Schaue dir an wie SAF wirklich geht.
Welche Action da benutzt werden und was da zurück kommt.
BEI SAF gibt es kein Code Beispiel und dort ist der ACTion Type, ACTION_PICK, ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT und ACTION_OPEN_DOCUMENT_TREE,

Leider steht da nicht, wie man nur Bilder, Nur Videos, oder in meinen Fall nur Zip hochladen kann.
 

Jw456

Top Contributor
oder in meinen Fall nur Zip hochladen kann.
Hochladen
Das heißt für mich du willst in einen Verzeichnis eine Datei erstellen oder eine dorthin kopieren.
Du könntest zb mit der TreeURl von Intent.ACTION_OPEN_DOCUMENT_TREE arbeiten.
Und dann mit Streams arbeiten.


Java:
DocumentFile treeUrlDir;       
            DocumentFile dir1 = treeUrlDir.createDirectory("Hallo");
            DocumentFile dir2 = dir1.createFile("txt", "Hallo.txt");
                        
            startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);

            try {
                writeTextToUri(dir2.getUri());
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                String text = readTextFromUri(dir2.getUri());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        private String readTextFromUri(Uri uri) throws IOException {
            InputStream inputStream = getContentResolver().openInputStream(uri);
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);
            }
            reader.close();
            return stringBuilder.toString();
        }

        private void writeTextToUri(Uri uri) throws IOException {
            OutputStream outPutStream = getContentResolver().openOutputStream(uri);
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outPutStream));
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            writer.write("Hallo ");
            writer.close();
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if ((requestCode == 42) && (resultCode == RESULT_OK) && (data != null)) {
                treeUrlDir = DocumentFile.fromTreeUri(this, data.getData());
             }
        }

Zum Thema nur zip Dateien anzeigen mit dem Intent des Systems wir so wohl nicht gehen .
Du benutzt den MimeTyp „application/“ ich glaube nach diesen wird der Intent nicht filtern sondern nur das Auswählen dieses Typs zulassen. Anzeigen wir wahrscheinlich alles. Aber die Wählbaren sind grau hinterlegt.
Du siehst ja in dem Dialog nach was du filtern kannst Bilder, Video, Dokumente.
 

wer112

Top Contributor
Hochladen
Das heißt für mich du willst in einen Verzeichnis eine Datei erstellen oder eine dorthin kopieren.
Du könntest zb mit der TreeURl von Intent.ACTION_OPEN_DOCUMENT_TREE arbeiten.
Und dann mit Streams arbeiten.


Java:
DocumentFile treeUrlDir;     
            DocumentFile dir1 = treeUrlDir.createDirectory("Hallo");
            DocumentFile dir2 = dir1.createFile("txt", "Hallo.txt");
                      
            startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);

            try {
                writeTextToUri(dir2.getUri());
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                String text = readTextFromUri(dir2.getUri());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        private String readTextFromUri(Uri uri) throws IOException {
            InputStream inputStream = getContentResolver().openInputStream(uri);
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);
            }
            reader.close();
            return stringBuilder.toString();
        }

        private void writeTextToUri(Uri uri) throws IOException {
            OutputStream outPutStream = getContentResolver().openOutputStream(uri);
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outPutStream));
            StringBuilder stringBuilder = new StringBuilder();
            String line;
            writer.write("Hallo ");
            writer.close();
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if ((requestCode == 42) && (resultCode == RESULT_OK) && (data != null)) {
                treeUrlDir = DocumentFile.fromTreeUri(this, data.getData());
             }
        }

Zum Thema nur zip Dateien anzeigen mit dem Intent des Systems wir so wohl nicht gehen .
Du benutzt den MimeTyp „application/“ ich glaube nach diesen wird der Intent nicht filtern sondern nur das Auswählen dieses Typs zulassen. Anzeigen wir wahrscheinlich alles. Aber die Wählbaren sind grau hinterlegt.
Du siehst ja in dem Dialog nach was du filtern kannst Bilder, Video, Dokumente.
Das Hochladen habe ich von Dem entwickler Registrieren übernommen. Ich kann Wahllos, png, jpeg, apk,... hochladen, leider funktioniert die Prüfung auf PHP Seite nicht. Es lässt alles durch. Deswegen hatte ich gehofft, das man mit setType bei Intent das richtige Format auswählen kann. Ich benutzte zum Hochladen VollyMultipartRequest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Größe Dateien Error crasht die App Android & Cross-Platform Mobile Apps 13
Meeresgott Android Best Practices zum Laden von Dateien Android & Cross-Platform Mobile Apps 0
V Kennt jemand ein Programm , um .DEX Dateien zu öffnen, bearbeiten und wieder speichern? Android & Cross-Platform Mobile Apps 2
J Android String in andere Java-Dateien überführen Android & Cross-Platform Mobile Apps 1
B Dateien Speichern Android & Cross-Platform Mobile Apps 6
T Android Wie kann man bei WebView Dateien hochladen? Android & Cross-Platform Mobile Apps 6
domjos1994 Große Dateien aus Soap-Objekt Android & Cross-Platform Mobile Apps 10
F Android Effizientes Laden von Dateien Android & Cross-Platform Mobile Apps 8
Anfänger2011 Speichern von bereits gefüllten Dateien Android & Cross-Platform Mobile Apps 8
B Android Dateien senden von assets Ordner? Android & Cross-Platform Mobile Apps 7
U MediPlayer: Wave Dateien aus "Music"-Ordner abspielen Android & Cross-Platform Mobile Apps 3
M Dateien in apk z.B. Texturdaten Android & Cross-Platform Mobile Apps 1
G Android Einbindung von externen Dateien in Eclipse Projekt Android & Cross-Platform Mobile Apps 8
@ .jar Dateien auf Android Gerät (Motorola RAZR XT910) Android & Cross-Platform Mobile Apps 6
P dateien laden nur aus jar? Android & Cross-Platform Mobile Apps 7
T Kann man JAD bzw. JAR Dateien auch auf meiner HP öffnen? Android & Cross-Platform Mobile Apps 2
G Auf vorhandene Dateien zugreifen Android & Cross-Platform Mobile Apps 6
W JSONARRAY per Intent an andere Activity übergeben und umwandeln ggbf. Android & Cross-Platform Mobile Apps 1
N Intent und finish() Problem Android & Cross-Platform Mobile Apps 5
ms_cikar Thread / Intent als externe klasse Android & Cross-Platform Mobile Apps 1
B Android Open Folder Intent? Android & Cross-Platform Mobile Apps 3
G Broadcast Intent action ausählen Android & Cross-Platform Mobile Apps 2
A Activity Intent 'source not found' Android & Cross-Platform Mobile Apps 4

Ähnliche Java Themen

Neue Themen


Oben