Android Webview App: scrollen & mailto links

14. September 2012

Ich habe mit Hilfe der Tutorials eine kleine Android App geschrieben, die eigentlich nichts anderes als ein Webview ist – man ruft damit eine bestimmte Seite auf, nur eben nicht über den Browser sondern über die App. Da stieß ich mit meinem Samsung Galaxy SIII auf 2 Probleme:

1. scrollen (jquery autoscoll, touchcarousel) funktionierte nicht

Ich habe zig jquery scripts zum Scrollen ausprobiert, bis ich über iscroll-4 zufällig auf die Lösung stieß. Man muss nachdem die Seite fertig geladen ist folgendes ausführen:

  1. document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

Und plötzlich klappte das mit dem scrollen wieder einwandfrei!

2. mailto Links wurden nicht korrekt behandelt.

Dieses Problem muss man direkt in der App angehen, in der Funktion die WebViewClient extended schreibt man sich die shouldOverrideUrlLoading etwas um:

  1.         @Override
  2.         public boolean shouldOverrideUrlLoading(WebView view, String url) {
  3.             if(url.startsWith("mailto:")){
  4.                 MailTo mt = MailTo.parse(url);
  5.                 Intent i = newEmailIntent(CreareActivity.this, mt.getTo(), mt.getSubject(), mt.getBody(), mt.getCc());
  6.                 startActivity(i);
  7.                 view.reload();
  8.                 return true;
  9.             }else{          
  10.                 view.loadUrl(url);
  11.             }
  12.             return true;
  13.         }

Danke an diesen Beitrag in stackoverflow für diesen tollen Geheimtipp!

“Permalink” zu einem einzelnen Facebook Post (Wallpost)

03. September 2012

Es ist leicht, wenn mans weiß. Aber wissen muss mans erstmal. Ich habe die Wallposts einer Facebook Seite ausgelesen:

  1. require_once 'facebook.php';
  2. $fb = new Facebook(array(
  3.           'appId'  => APP_ID,
  4.           'secret' => APP_SECRET,
  5.             'cookie' => true
  6.         ));
  7. $at = $fb->getAccessToken();    
  8. $url = 'https://graph.facebook.com/PAGE_ID/feed?limit=10&access_token='.$at;
  9. $contents = file_get_contents($url);
  10. $FBdata = json_decode($contents);

Und festgestellt, dass nicht überall ein Link mitgegeben wird. Daher habe ich ihn selbst zusammengebaut:

  1. foreach($FBdata->data as $k => $data){
  2.     if($data->message){
  3.         $id_arr = explode("_", $data->id); //get the post ID from PAGEID_POSTID
  4.         $msg = $data->message; // the message
  5.         $msg = explode("###", wordwrap($msg,50, "###")); //short it down to 50 characters
  6.         $link = 'https://www.facebook.com/PAGEURL/posts/'.$id_arr[1];
  7.         echo "<a href='".$link."'>".$msg[0]."...</a>";
  8.     }
  9. }

Damit lautet der Permalink zu einem Beitrag https://www.facebook.com/PAGEURL/posts/POSTID.