2011-04-17 113 views
1

在手機安卓畫廊沒有對圖像分享到Facebook和張貼在牆上。我想的完全相似的方式發佈消息或圖像到牆上的一個選項從我的app.How可以做到這一點?在Android的Facebook牆上發佈?

我的理解:我認爲,它使用Facebook應用程序已經出現在我的phone.If是這樣的話,那麼我就可以啓動特定的活動或拋出相應的從我的app.If該活動的目的是這樣的話有人可以讓我知道什麼是相應的意圖,我應該拋出。 什麼是我應該傳遞的意圖和什麼關鍵字我應該傳遞這些參數?

糾正我,如果我的理解是錯誤的,讓我知道如何做到這一點。

P.S:根據這個美好的職位Android/Java -- Post simple text to Facebook wall?我一直在使用Facebook SDK,並將其works.But對話框別看good.That。這就是爲什麼我要尋找一個不同的選項。

謝謝

+0

你能否詳細說明 '對話框並不看好'?這樣,任何新的解決方案都可以在你看到它們時克服這些限制。 – 2011-04-17 10:56:59

+0

我相信它顯示在網絡視圖上,非常擁擠,我在畫廊中看到的那個看起來更好。 – rogerstone 2011-04-17 12:43:46

回答

2

我認爲你正在尋找ACTION_SEND意圖。

請參閱this post

編輯:和its doc

第二個編輯:請注意,如果男人沒有Facebook的應用程序,他將無法分享。如果您使用the Facebook API,那麼他將能夠分享到Facebook,但只有Facebook。

+0

是的,這是我正在尋找,但似乎現在沒有正確處理Facebook的ACTION_SEND意圖。http://stackoverflow.com/questions/3515198/share-text-on-facebook-from-android-app-via-action-send – rogerstone 2011-04-17 12:37:47

+0

ACTION_SEND處理不當,但它仍然適用於基本使用。破壞的是它不處理ACTION_SEND中的所有字段,也不使用Facebook應用程序來處理該操作。相反,它打開一個網頁m.facebook.com來處理牆貼(至少它驗證)。 – 2011-04-18 20:41:50

1

很長一段時間的研究。最後我找到了解決辦法..

它對我很好。

private void postToFacebookViaIntent() { 
File mFile = new File(Environment.getExternalStorageDirectory()+ "/images.jpg"); 
    Intent shareIntent = findFacebookClient(); 

    if (shareIntent != null && mFile!= null) { 

     shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(mFile)); 
     startActivity(Intent.createChooser(shareIntent, "Share")); 
    } else { 
     Toast.makeText(SharingActivity.this, "Facebook App is not installed", Toast.LENGTH_SHORT).show(); 
    } 

}

private Intent findFacebookClient() { 
    final String twitterApps = "facebook"; 
    Intent facebookIntent = new Intent(); 
    facebookIntent.setAction(Intent.ACTION_SEND); 
    facebookIntent.setType("image/jpeg"); 
    final PackageManager packageManager = getPackageManager(); 
    List<ResolveInfo> list = packageManager.queryIntentActivities(
      facebookIntent, 0); 

    for (ResolveInfo resolveInfo : list) { 
     String p = resolveInfo.activityInfo.packageName; 
     if (p != null && p.contains(twitterApps)) { 
      facebookIntent.setPackage(p); 
      return facebookIntent; 
     } 
    } 
    return null; 
}