"Berechtigung für den Anhang verweigert" (in Gmail 5.0) versucht, eine Datei an die E-Mail-Absicht anzuhängen

8

Diese Frage vor geschrieben wurde, aber es gab keine klare oder akzeptierte Antwort und alle bereitgestellten Lösungen, die auf „Arbeit“ sollten nicht für mich getan hat. Siehe hier: Gmail 5.0 App schlägt mit "Berechtigung für den Anhang verweigert" fehl, wenn sie ACTION_SEND-Intent empfängt

Ich habe eine App, die Daten in einer Textdatei aufbaut und muss zusammen in einer E-Mail die Textdatei senden, wird es automatisch zu befestigen. Ich habe viele Wege versucht zu bekommen, dies zu befestigen, und es funktioniert anscheinend für Gmail 4.9 und unten aber 5.0 hat einige neue Berechtigung verfügt es aus deaktivieren zu tun, was ich will.

%Vor%

Die datapieces könnte leer sein ja, aber die aktuelle Datei Zeile unterhalb der for-Schleife ist immer zuverlässig und immer legt etwas.

Ich habe versucht,

zu ändern %Vor%

bis

%Vor%

Wenn ich das tue, es legt, aber Gmail dann abstürzt und wenn ich die logcat überprüfen ist es wegen eines Null-Zeiger. Dies liegt höchstwahrscheinlich daran, dass Gmail keinen Zugriff auf die Datei hat und daher als null angezeigt wird.

Ich habe auch versucht,

zu verwenden %Vor%

statt

%Vor%

und es hat das gleiche Ergebnis.

Was mache ich hier falsch, und wie soll ich es beheben? Ein Beispielcode wäre wirklich, wirklich praktisch , weil ich neu in der Android-Entwicklung bin und zu erklären, was ich ohne eine Art Push-off tun muss, wird wahrscheinlich nicht helfen.

Vielen Dank.

    
Edwin Finch 15.01.2015, 04:08
quelle

2 Antworten

6

Okay Leute. Nahm eine Pause und kam zurück, fand es heraus.

So funktioniert es: Sie müssen Schreib- / Leseberechtigungen für externen Speicher haben. Fügen Sie diese Berechtigungen also Ihrem Manifest hinzu:

%Vor%

Anschließend muss Ihre Datei aus dem internen Speicherverzeichnis Ihrer App in das externe Verzeichnis der App kopiert werden. Ich empfehle, dass Sie internen Speicher verwenden, und das ist, was ich hier mache, damit Sie SD-Karten selbst herausfinden können.

Hier ist der Code-Block, der die Magie macht. Protokolle sind enthalten, aber Sie können sie auf alle Fälle entfernen.

%Vor%     
Edwin Finch 19.01.2015, 03:01
quelle
1

Derselbe Anhang wurde abgelehnt. Berechtigungen in Manifest hatten keine Wirkung, haben aber seit API 23 keine Wirkung mehr. Zuletzt löste sie es wie folgt.

1. Notwendigkeit, Berechtigungen zur Laufzeit zu überprüfen und zu erteilen, habe ich in meiner Haupttätigkeit gemacht:

%Vor%

Erstellen Sie jetzt beim Senden eine Datei im Verzeichnis PUBLIC (versucht, in meinen App-Ordner zu speichern - dasselbe Problem mit der Ablehnung)

%Vor%

Verfassen Sie jetzt die Sendeabsicht und putExtra mit uri zu Ihrer Datei, die sich im öffentlichen Speicher befindet, für die der Benutzer Berechtigungen erteilen muss und die nun kein Problem mehr verursacht

%Vor%     
Boris Gafurov 16.10.2017 18:39
quelle