Aktion durchführen mit... (Facebook, Browser, ...)

  • Antworten:8
Jan H.
  • Forum-Beiträge: 16

24.12.2012, 23:39:15 via Website

Hallo Community,

ich möchte eine Auswahl mit "Aktion durchführen mit..." erstellen aber leider weiß ich es nicht wie es funktioniert.
Ich habe was vom "Intent-Filter" gelesen, damit eine Einschränkung fürs öffnen gibst.

Das heißt:
Wenn man auf einen Button klickt soll eine Auswahl erscheinen, wie zum Beispiel diese hier:



Durch den Intent-Filter soll (wenn vorhanden) die Facebook-App, der Standardbrowser, andere Browser, oder ähnliches heraus sortiert werden.


Freundliche Grüße und vielen Dank im voraus
Jan H.

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

25.12.2012, 20:03:27 via Website

Willst du, dass deine User irgendwas bei Facebook oder so posten? Dann ist der ShareActionProvider das richtige für dich. Ansonsten brauchst du nur einen Intent mit einer entsprechenden Action erzeugen und ihn broadcasten, dass System zeigt dem User dann von Haus aus den von dir gewünschten Dialog, falls es mehrere Apps gibt, die mit dem Intent was anfangen können.

Antworten
Jan H.
  • Forum-Beiträge: 16

26.12.2012, 02:42:46 via Website

Ich möchte das man auf eine Facebook-Page und auf eine Twitter-Page gelangt.

Im Moment wird der Browser gestartet ohne nachzufragen.

Hier meinen jetzigen Quellcode:

1// Facebook Button - URL
2 public void goTo_Facebook_Page (View view) {
3 goToUrl ("LINK-ZUR-FACEBOOK-PAGE");
4 }
5
6 // Twitter Button - URL
7 public void goTo_Twitter_Page (View view) {
8 goToUrl ("LINK-ZUR-TWITTER-PAGE");
9 }
10
11 // goToUrl = Browser wird gestartet
12 private void goToUrl (String url) {
13 Uri uriUrl = Uri.parse(url);
14 Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
15 startActivity(launchBrowser);
16 }

goTo_Facebook_Page = Der onClick Wert des Facebook Buttons
goTo_Twitter_Page = Der onClick Wert des Twitter Buttons

Wäre super wenn du ggf. ein Bespiel posten könntest.

— geändert am 26.12.2012, 02:43:02

Antworten
Phil G.
  • Forum-Beiträge: 86

26.12.2012, 10:56:16 via Website

Wenn du die Page nur anzeigen möchtest so hast du bei Facebook das Problem das nicht öffentliche Seiten dich immer zur Login-Seite von Facebook führen. (sofern du nicht eingeloggt bist)

Da wir ja auf einer mobilen Plattform sind, könntest du deinem Nutzer anbieten, die Seite direkt in der Facebook/Twitter App zu öffnen oder wenn dies nicht möglich ist, halt den Browser aufzumachen. (Fallback)

Problem hierbei du benötigst die Facebook-ID , Twitter-ID , Twitter - Namen für die verschiedenen Aufrufe, weil Browser und Intentaufruf etwas unterschiedlich sind.

Hilfsmittel dazu:

Facebook
http://findmyfacebookid.com/

Twitter
http://www.idfromuser.com/




1private void starteTwitter(String twittername, String twitterid){
2 Intent intent = null;
3 try {
4 // get the Twitter app if possible
5 DEINEACTIVITY.this.getPackageManager().getPackageInfo("com.twitter.android", 0);
6 intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=" + twitterid));
7 } catch (Exception e) {
8 // no Twitter app, revert to browser
9 intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/" + twittername));
10 }
11 this.startActivity(intent);
12 }

1private void starteFacebook(String fbuser, String fbid){
2 String facebookApp = "fb://profile/" + fbid;
3 String facebookWeb = "https://www.facebook.com/" + fbuser;
4 Intent intent = null;
5 try {
6 DEINEACTIVITY.this.getPackageManager().getPackageInfo("com.facebook.katana", 0);
7 intent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookApp));
8 } catch (Exception e) {
9 intent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookWeb));
10 }
11 startActivity(intent);
12 }

— geändert am 26.12.2012, 10:57:12

Antworten
Jan H.
  • Forum-Beiträge: 16

26.12.2012, 23:24:22 via Website

Ah... super Danke!
An Hand deine beiden Beispiele habe ich das Prinzip soweit verstanden.

Nur das Einzige was ich nicht verstanden habe ist das mit der Facebook-ID bzw. Twitter-ID.
Wo muss ich denn die Facebook-ID bzw. Twitter-ID ersetzen?

Ich habe den Quellcode in meiner Java Datei übertragen und durch meine Werte ersetzt nun wird aber die Erste Zeile:

1private void starteFacebook(String fbuser, String fbid){

Orange-Gelb unterkringelt.

Als Warnung wird dieses ausgegeben:
"The method starteFacebook(String, String) from the type TestApplication is never used locally"

— geändert am 26.12.2012, 23:26:28

Antworten
Phil G.
  • Forum-Beiträge: 86

27.12.2012, 00:19:51 via Website

Das Grundproblem ist, der Aufruf der Apps in Android passiert ja per Intent und diesen Intents kann man "Daten" mitgeben bzw. erkennen bestimmte Apps selber was Sie an mitgegebenen Daten verarbeiten können.
Deswegen baue ich per Uri.parse("twitter://user?user_id=" + twitterid)); mir den String zusammen, welcher aufgerufen werden soll.
Der Aufruf per Webbrowser funktioniert nur per Twitternamen und nicht über die ID, deswegen beide Angaben.



Die beiden Codeschnipsel sind ja bereits fertige Routinen, du musst nur den Namen deiner Activity ersetzen/verändern.


Und dann brauchst du sie nur aus deinem Programm aufrufen.

ala Button -> clickhandler -> click --->

starteTwitter(hierdergwünschteTwittername, undhierdieID);

Ist ja nur ein Routinenaufruf.
Ich hoffe das meintest Du.


PS: "The method starteFacebook(String, String) from the type TestApplication is never used locally"

meldet Dir nur das du eine Funktion/Methode in deinem Programm definiert hast, diese aber nicht benutzt bzw nicht aufgerufen wird.
Ich kenn die Warnmeldung eigentlich nur bei nicht verwendeten Variablen.

— geändert am 27.12.2012, 00:28:49

Antworten
Jan H.
  • Forum-Beiträge: 16

27.12.2012, 15:20:06 via Website

Wenn ich die durch meine ersetze also so:

1private void goTo_Facebook_KaiUweApp(KaiUweApp, 210504259076894) {

dann kommen 3 Error heraus.

Syntax error on token "}", delete this token
Syntax error on tokens, delete these tokens
Syntax error, insert "}" to complete ClassBody


Ich habe schon ca. 30 Minuten herum "geschraubt" aber ich habe die Error nicht weg bekommen.

— geändert am 27.12.2012, 15:20:49

Antworten
Phil G.
  • Forum-Beiträge: 86

27.12.2012, 15:53:26 via Website

Nein nein stopp Kommando zurück :)

Die beiden Schnipsel sind bereits fertige Routinen sprich Unterroutinen, du hast gerade versucht den Funktion/Methodenkopf zu verändern was natürlich so nicht funktioniert.

Du musst lediglich diese Unterroutine aufrufen, sprich deine Parameter packst du in den Aufruf:

starteFacebook("KaiUweApp", 210504259076894);

Antworten
Jan H.
  • Forum-Beiträge: 16

29.12.2012, 14:29:33 via Website

Vielen Dank das du dir die Mühe machst mir es zu erklären aber jetzt versteh ich gar nichts mehr :(

Antworten