1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. enrem, 14.08.2018 #1
    enrem

    enrem Threadstarter Erfahrener Benutzer

    Hallo zusammen,

    nach der Umstellung auf API26 kann ich die Excel-Dateien nicht mehr mit ACTION_VIEW öffnen.

    Von „OfficeDocuments“ kommt die Meldung „Es scheint das die Seite nicht korrekt dargestellt werden konnte“.

    Von „Excel“ kommt die Meldung „Datei kann nicht geöffnet werden“.

    Ich gehe mal davon aus, dass der Pfad stimmt, denn ändere ich ACTION_VIEW auf ACTION_SEND, kann ich die ausgewählte Datei bspw. per eMail versenden.

    Hat jemand eine Ahnung woran das liegen kann? Muss ich im Manifest evtl. noch eine Permission setzten damit ich die Excel-Dateien mit fremden Apps öffnen kann?

    Hier mal mein Code.

    Code:
    private void openFile(final String filename) {
    
            //Inhalt von filename
            //filename = /storage/emulated/0/stundenbuch/xls/aa_stb20180528_151116.xls
    
            File myfile = new File(filename);
    
            //Zum auffinden der passenden App
            MimeTypeMap myMime = MimeTypeMap.getSingleton();
            String mimeType = myMime.getMimeTypeFromExtension(fileExt(filename));
    
             //Mit ACTION_SEND geht es
            Intent i = new Intent(Intent.ACTION_VIEW);
    
            i.setType(mimeType);
    
            i.putExtra(Intent.EXTRA_SUBJECT, "Wähle...");
    
            //Eine Uri erzeugen. Autorisierung siehe Manifest provider
            Uri uriFile = FileProvider.getUriForFile(this,
                    "de.meine.domain.fileprovider",
                    myfile);
    
            //Inhalt von uriFile
            //uriFile = content://de.meine.domain.fileprovider/external_files/stundenbuch/xls/aa_stb20180528_151116.xls
    
            i.putExtra(Intent.EXTRA_STREAM, uriFile);
            i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    
            try {
                startActivity(Intent
                        .createChooser(i, "öffnen..."));
    
            } catch (ActivityNotFoundException ex) {
                Toast.makeText(getApplicationContext(),
                        "Fehler...", Toast.LENGTH_SHORT)
                        .show();
            }
    
        }
    
    Hier ein Auszug meiner Logcat (Filter auf Error).

    08-14 13:33:36.661 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:36.899 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:37.098 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:37.187 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:37.188 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:37.298 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:37.417 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:37.476 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:38.259 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:38.454 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
    08-14 13:33:38.542 25770-25861/? E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5

    Würde mich über ein paar Tipps freuen,
    Vorab besten Dank.
     
  2. jogimuc, 14.08.2018 #2
    jogimuc

    jogimuc Android-Hilfe.de Mitglied

    Hallo erstmal eine Frage von welcher API hast du umgestellt ?
    Vor 23 oder danach?
    Ab API 23 brauchst du auch die Premission zur laufzeit die im Manifest reicht da nicht mehr.
     
  3. enrem, 14.08.2018 #3
    enrem

    enrem Threadstarter Erfahrener Benutzer

    Hallo,

    das war vor API 23. Ich meine es war API 19.

    Nachtrag Problem gelöst:

    statt i.putExtra(Intent.EXTRA_STREAM, uriFile) habe ich i.setDataAndType(uriFile, mimeType) verwendet und nun geht es.

    Trotzdem vielen Dank für die Mühe.
     
    Zuletzt bearbeitet: 14.08.2018
  4. jogimuc, 14.08.2018 #4
    jogimuc

    jogimuc Android-Hilfe.de Mitglied

    Ok nur wo speicherst du deine Datei ?
    Denke drann wenn du auf die Sdkarte intern oder exten willst brauchst du die Laufzeit Permission.
     
  5. enrem, 14.08.2018 #5
    enrem

    enrem Threadstarter Erfahrener Benutzer

    Die Datei liegt hier:

    File myfile = new File("/storage/emulated/0/stundenbuch/xls/aa_stb20180528_151116.xls");

    Die Uri erzeuge ich mit meinem FileProvider:

    Uri uriFile = FileProvider.getUriForFile(this,"de.meine.domain.fileprovider", myfile);

    Der Inhalt der Uri sieht dann so aus:

    "content://de.meine.domain.fileprovider/external_files/stundenbuch/xls/aa_stb20180528_151116.xls"

    Die Permission setze ich beim Intent so:

    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    Android 9 (Virtualmaschine) und Android 8 (mein Smartphone), dort kann ich die xls-Datei erfolgreich erzeugen, versenden und öffnen. Bilder mit der Kamera machen geht nun auch Dank des FileProviders.

    Ich muss gestehen, dass ich es mit dem FileProvider noch nicht so ganz gerafft habe.

    So sieht mein FilePath in der xls-Datei aus:

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <paths xmlns:android="http://schemas.android.com/apk/res/android">
        <external-path
            name="external_files"
            path="."/>
    </paths>
    Ich vermute mal das die uri den Teil der Domain hier rot "content://de.meine.domain.fileprovider/external_files/stundenbuch/xls/aa_stb20180528_151116.xls" mit "." ersetzt wird.
     
    Zuletzt bearbeitet: 15.08.2018
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Intent mit Zeitverzögerung ? Android App Entwicklung 20.07.2018
Intent: Bundel-Inhalt kommt nicht an Android App Entwicklung 20.07.2018
methoden holen geht nicht mehr. Android App Entwicklung 30.06.2018
Daten von Android Wear zur Handy-App senden geht nicht Android App Entwicklung 03.04.2018
Notification beenden wenn ein übergebener Intent ausgeführt wird. Android App Entwicklung 02.03.2018
[ERLEDIGT] App does not run under higher versions (up to API 25) Android App Entwicklung 01.12.2017
Du betrachtest das Thema "API 26 Intent mit ACTION_VIEW und FileProvider geht nicht" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.