7

我想共享純文本,同時通過ActionBarSherlock使用共享操作提供程序,並且只有四個選項與其共享並且沒有「查看所有...」選項。只有四個選項ShareActionProvider與ActionBarSherlock

這是爲什麼?

這是什麼樣子:

,這就是我想要它看起來像:

+0

ActionShareProvider列出了所有可以處理您爲提供者創建的意圖類型的應用程序。如果您只看到4個,那麼這些是唯一接受您創建的意圖類型數據的特定應用程序。此外,爲什麼你想要一個照片分享(類別或應用程序,不確定)被列爲純文本? – Idistic

+0

我正在嘗試使用Share Action Provider作爲用戶共享鏈接來下載我的應用程序的選項,並且我有像Facebook和Twitter這樣的應用程序,並且沒有這些應用程序的選項。我所看到的圖片是我下載的另一個應用程序,當我選擇「查看所有...」時,我可以共享10個不同的應用程序。 – GreekOphion

回答

8

行,所以不管ActionBarSherlock第一個測試,看看你創建你的意圖正確地,ABS使用與通用選擇器相同的代碼,以便在執行此代碼時查看您所查找的應用程序是否顯示。

Intent I= new Intent(Intent.ACTION_SEND); 
    I.setType("text/plain"); 
    I.putExtra(android.content.Intent.EXTRA_TEXT, "My Test Text"); 

    startActivity(Intent.createChooser(I,"Share using ...")); 

所有這些應用程序的可處理純文本會顯示出來,如果Facebook,或任何你期望是不是有那麼這些應用程序的不支持您已註冊的類型(普通/文本ACTION_SEND意圖)。 (Facebook的,但一分鐘更多)

ABS有一個使用共享操作提供程序的示例,但它嘗試發送照片,而不是文本消息(狀態更新)您應該使用的設置是這樣

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate your menu. 
    getSupportMenuInflater().inflate(R.menu.share_action_provider, menu); 

    // Set file with share history to the provider and set the share intent. 
    MenuItem item = menu.findItem(R.id.menu_item_share_action_provider_action_bar); 
    ShareActionProvider provider = (ShareActionProvider) item.getActionProvider(); 
        provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); 
    // Note that you can set/change the intent any time, 
    // say when the user has selected an image. 
    provider.setShareIntent(createShareIntent()); 

    return true 
} 

這裏是將用於匹配應用程序的,並從樣品

private Intent createShareIntent() { 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("image/plain"); 
     Uri uri = Uri.fromFile(getFileStreamPath("shared.png")); 
     shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     shareIntent.putExtra(Intent.EXTRA_TITLE, "This is an android icon"); 
     return shareIntent; 
    } 

一一列舉出來的意圖,但你希望它是

private Intent createShareIntent() { 
     Intent I= new Intent(Intent.ACTION_SEND); 
     I.setType("text/plain"); 
     I.putExtra(android.content.Intent.EXTRA_SUBJECT, "TEST - Disregard"); 
     I.putExtra(android.content.Intent.EXTRA_TEXT, Uri.parse("http://noplace.com")); 
    } 

這應該給你在ABS上的相同列表,它在我用上面的選擇器顯示的小測試存根中。

現在的壞消息。 Facebook應用程序並沒有真正起作用,它會啓動用戶更新頁面,但它不會填充文本。這是一次又一次,再次破裂,但我昨晚試了一下,結果失敗了。這是一個已報告和接受的Facebook應用程序錯誤。儘管無法設置標題,但您可以發佈照片How many times will Facebook break/fix this?

3

僅需注意未來的讀者,ActionBarSherlock的ShareActionProvider不支持從v4.1.0開始的溢出菜單。也許這可能會在未來更新。


下面是從share_action_provider.xml文件從SampleList演示代碼:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/menu_item_share_action_provider_action_bar" 
     android:showAsAction="always" 
     android:title="@string/action_bar_share_with" 
     android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" /> 

    <!-- XXX: For now, ShareActionProviders must be displayed on the action bar --> 
    <!--item android:id="@+id/menu_item_share_action_provider_overflow" 
     android:showAsAction="never" 
     android:title="@string/action_bar_share_with" 
     android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" /--> 

</menu> 

這個答案的信息 - 我花了相當長的一段時間才能找到這一點,所以我想使未來的讀者更容易找到。

相關問題