Ich entwickle eine Android-App und bin interessiert zu erfahren, wie Sie den Status des App-Benutzers innerhalb der App mithilfe der Freigabeabsichten von Android aktualisieren können.
Nachdem ich das SDK von Facebook durchgesehen habe, scheint es einfach genug zu sein, aber ich möchte dem Benutzer erlauben, dies über das reguläre Popup-Fenster "Share Intent" zu tun. hier gesehen:
Ich habe den üblichen Share Intent Code ausprobiert, dies scheint jedoch für Facebook nicht mehr zu funktionieren.
public void invokeShare(Activity activity, String quote, String credit) {
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, activity.getString(R.string.share_subject));
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Example text");
activity.startActivity(Intent.createChooser(shareIntent, activity.getString(R.string.share_title)));
}
UPDATE: Nachdem wir mehr gegraben haben, sieht es so aus, als wäre es ein Fehler in der Facebook-App, der noch behoben werden muss! ( Facebook-Bug ) In der Zwischenzeit sieht es so aus, als müsste ich mich nur mit dem negativen "Teilen funktioniert nicht !!!" abfinden. Bewertungen. Prost Facebook: * (
quelle
Antworten:
Hier ist ein Fehlerlink: https://developers.facebook.com/bugs/332619626816423
Danke @billynomates:
quelle
Anscheinend können Sie auf Facebook (ab 2014) den Freigabebildschirm nicht mehr anpassen, unabhängig davon, ob Sie nur die URL sharer.php öffnen oder Android-Absichten auf speziellere Weise verwenden. Siehe zum Beispiel diese Antworten:
Wie auch immer, mit Klar Intents, Sie können immer noch eine URL teilen, aber keine Standardtext mit ihm , als billynomates kommentiert . (Wenn Sie keine URL zum Teilen haben, ist es ebenso einfach, die Facebook-App mit dem leeren Dialog "Beitrag schreiben" (dh Statusaktualisierung) zu starten. Verwenden Sie den folgenden Code, lassen Sie ihn jedoch weg
EXTRA_TEXT
.)Hier ist die beste Lösung , die ich gefunden habe , die sich nicht verwickeln Verwendung irgendwelcher Facebook SDKs.
Dieser Code öffnet die offizielle Facebook-App direkt, wenn sie installiert ist, und greift ansonsten auf das Öffnen von sharer.php in einem Browser zurück. (Die meisten anderen Lösungen in dieser Frage rufen einen riesigen Dialog "Vollständige Aktion mit ..." auf, der überhaupt nicht optimal ist!)
(Bezüglich des
com.facebook.katana
Paketnamens siehe den Kommentar von MatheusJardimB .)Das Ergebnis sieht auf meinem Nexus 7 (Android 4.4) mit installierter Facebook-App folgendermaßen aus:
quelle
com.facebook
Präfix entsprechen würden.Der übliche Weg
Der übliche Weg, um das zu erstellen, wonach Sie fragen, besteht darin, einfach Folgendes zu tun:
Dies funktioniert für mich ohne Probleme.
Der alternative Weg (vielleicht)
Das potenzielle Problem dabei ist, dass Sie auch zulassen, dass die Nachricht per E-Mail, SMS usw. gesendet wird. Der folgende Code wird in einer Anwendung verwendet, sodass der Benutzer mir eine E senden kann -mail mit Google Mail. Ich vermute, Sie könnten versuchen, es so zu ändern, dass es nur mit Facebook funktioniert.
Ich bin mir nicht sicher, wie es auf Fehler oder Ausnahmen reagiert (ich vermute, dass dies auftreten würde, wenn Facebook nicht installiert ist), daher müssen Sie es möglicherweise ein wenig testen.
quelle
In Lollipop (21) können Sie
Intent.EXTRA_REPLACEMENT_EXTRAS
die Absicht für Facebook spezifisch überschreiben (und nur einen Link angeben).https://developer.android.com/reference/android/content/Intent.html#EXTRA_REPLACEMENT_EXTRAS
quelle
Ich habe herausgefunden, dass Sie nur Text oder Bild teilen können , nicht beide mit
Intents
. Der folgende Code teilt nur Bild, falls vorhanden, oder nur Text, wenn Bild nicht beendet wird. Wenn Sie beide teilen möchten, müssen Sie das Facebook SDK von hier aus verwenden.Wenn Sie anstelle des folgenden Codes eine andere Lösung verwenden, vergessen Sie nicht, auch den Paketnamen com.facebook.lite anzugeben , bei dem es sich um den Paketnamen von Facebook Lite handelt . Ich habe nicht getestet, aber com.facebook.orca ist der Paketname von Facebook Messenger wenn Sie auch darauf abzielen möchten.
Sie können weitere Methoden zum Teilen mit WhatsApp , Twitter ... hinzufügen.
Verwenden Sie die folgende Klasse , um Uri aus der Datei zu erhalten:
Verwenden Sie zum Schreiben von FileProvider diesen Link: https://github.com/codepath/android_guides/wiki/Sharing-Content-with-Intents
quelle
Hier ist was ich getan habe (für Text). Im Code kopiere ich den benötigten Text in die Zwischenablage. Wenn eine Person zum ersten Mal versucht, die Schaltfläche zum Teilen von Absichten zu verwenden, wird eine Benachrichtigung angezeigt, in der erklärt wird, ob sie auf Facebook teilen möchten. Sie müssen auf "Facebook" klicken und dann lange drücken, um sie einzufügen (um sie auf Facebook aufmerksam zu machen) hat das Android Intent System gebrochen). Dann sind die relevanten Informationen im Feld. Ich könnte auch einen Link zu diesem Beitrag einfügen, damit sich Benutzer auch beschweren können ...
Nachfolgend finden Sie eine Methode für den Umgang mit früheren Versionen
quelle
Scheint in Version 4.0.0 von Facebook so viele Dinge geändert zu haben. Dies ist mein Code, der gut funktioniert. Hoffe es hilft dir.
quelle
Diese Lösung funktioniert auch. Wenn kein Facebook installiert ist, wird nur der normale Freigabedialog ausgeführt. Wenn dies der Fall ist und Sie nicht angemeldet sind, wird der Anmeldebildschirm aufgerufen. Wenn Sie angemeldet sind, wird das Freigabedialogfeld geöffnet und die "Freigabe-URL" aus dem Intent Extra eingegeben.
quelle
Hier ist etwas, was ich getan habe, um die Facebook-App mit Link zu öffnen
quelle
quelle
Facebook erlaubt es nicht, Klartextdaten mit zu teilen,
Intent.EXTRA_TEXT
aber Sie können Text + Link mit Facebook Messanger teilen, dies funktioniert gut für michquelle
Der einfachste Weg, eine Nachricht von meiner App an Facebook zu übergeben, bestand darin, programmgesteuert in die Zwischenablage zu kopieren und den Benutzer darauf aufmerksam zu machen, dass er die Option zum Einfügen hat. Dies erspart dem Benutzer das manuelle Ausführen. Meine App wird nicht eingefügt, aber der Benutzer könnte.
quelle