2016-06-01 10 views
1

Ich möchte Benutzer eine Datei freigeben lassen, sagen wir mit Intent.ACTION_SEND dann Speichern Benutzer Wahl und Adresse/Telefonnummer, um automatisch senden zu können eine andere Datei zum selben Ziel zu einer anderen Zeit. Ist das möglich und wie? DankIst es möglich, eine Datei mit Intent.ACTION_SEND teilen abzurufen und zu speichern Benutzerwahl

+0

Es ist sehr wahrscheinlich möglich. –

+0

und könntest du mich wenigstens in die richtige Richtung führen. Über eine Stunde Recherche führte mich zu nichts. – MotKohn

Antwort

2

Sie können Ihre Datei als Binärdaten wie unten erläutert teilen.

referenzierte Link von Android Developer Seite: https://developer.android.com/training/sharing/send.html

senden Binary Inhalt

Binärdaten geteilt wird kombiniert, um die ACTION_SEND Aktion mit mit den entsprechenden MIME-Typ Einstellung und die URI auf die Daten bei der Platzierung ein Extra namens EXTRA_STREAM. Dies wird häufig verwendet ein Bild zu teilen, sondern kann verwendet werden, um jede Art von binären Inhalt zu teilen:

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); 
shareIntent.setType("image/jpeg"); 
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 

Beachten Sie Folgendes:

Sie einen MIME-Typ "verwenden können / ", aber dies entspricht nur den Aktivitäten , die mit generischen Datenströmen umgehen können. Die empfangende Anwendung benötigt die Berechtigung, auf die Daten zuzugreifen, auf die der Uri verweist. Die empfohlenen Methoden hierfür sind : Speichern Sie die Daten in Ihrem eigenen ContentProvider und stellen Sie sicher, dass andere Apps die richtige Berechtigung haben, auf Ihren Provider zuzugreifen. Der bevorzugte Mechanismus für , der Zugriff bereitstellt, besteht darin, pro-URI-Berechtigungen zu verwenden, die temporär sind, und gewähren Sie nur Zugriff auf die empfangende Anwendung. Eine einfache Möglichkeit, einen ContentProvider wie diesen zu erstellen, ist die FileProvider-Helper-Klasse. Verwenden Sie das System MediaStore. Der MediaStore zielt hauptsächlich auf Video, Audio- und Image-MIME-Typen, jedoch beginnend mit Android 3.0 (API Level 11) kann es auch Nicht-Medientypen speichern (siehe MediaStore.Files für weitere Informationen). Dateien können mithilfe von scanFile() in den MediaStore eingefügt werden. Danach wird ein für die Freigabe geeignetes content: // style Uri an den bereitgestellten onScanCompleted() - Callback übergeben. Beachten Sie, dass einmal in das System hinzugefügt Mediastor der Inhalt jeden App auf dem Gerät

Gerade ändern Sie die letzte Zeile in obigem Code zugänglich ist, so dass es nicht Chooser jedes Mal zeigen. Es speichert die Standardauswahl bei der nachfolgenden Ausführung Ihrer Anwendung.

startActivity(shareIntent); 

In Bezug auf „dann speichern Benutzer Wahl und Adresse/Telefonnummer, um der Lage sein, automatisch eine andere Datei zum selben Ziel schicken“ Wahl

Benutzer die Dateien auf eine bestimmte Anwendung des Sendens wird unter Verwendung des obigen Codes gespeichert. Aber ich denke nicht, dass Sie eine bestimmte Nummer/Adresse aus einer anderen Anwendung in Ihrer Anwendung speichern können, um Dateien später zu senden. Sobald Ihre Absicht zu einer anderen Aktivität (Anwendung) geht, kann sie nicht von Ihrer vorherigen Aktivität (Anwendung) aus gesteuert werden. Jedes Mal müssen Sie diese bestimmte Adresse/Nummer in der zweiten Anwendung auswählen.

+0

Danke, ich wollte mich nicht auf den Versandmechanismus beschränken. Gibt es einen anderen Weg? – MotKohn

+0

Ich kann mir im Moment keinen anderen Mechanismus vorstellen. Absicht ist der Standard Weg zu gehen. Mal sehen, ob jemand anderes etwas vorschlägt. Wenn Sie eine andere Alternative finden, teilen Sie diese bitte hier mit. – kingAm