10
A
回答
12
如果您想保留所有共享歷史數據模型,但只是不想額外的「默認共享活動」icom。 How do you turn off share history when using ShareActionProvider?的答案不夠好。
你應該做的是:
- 複製這些類從ActionBarSherlock到您的項目代碼
- ShareActionProvider.java
- ActivityChooserView.java
- 在你ShareActionProvider。 java類,導入您剛剛複製的ActivityChooserView.java,而不是ActionBarShelock文件位置
- 在ActivityChooserView.java -
- 找到行
if (activityCount > 0 && historySize > 0)
- 與
if (false)
替換該行(這是很醜陋,但它是最快的修復。你可以深入到代碼以刪除DefaultActivity實施的所有實例)
- 找到行
編輯: 不要忘記設置新ActionProvider
到你的菜單項,從XML它會是什麼樣子: android:actionProviderClass="com.*.CustomShareActionProvider"
就是這樣!
4
基於肖恩的答案我創建了必要的課程,您可以將它們複製到您的項目中(https://gist.github.com/saulpower/10557956)。這不僅增加了關閉歷史記錄的功能,而且還可以過濾您想與之共享的應用程序(如果您知道程序包名稱)。
private final String[] INTENT_FILTER = new String[] {
"com.twitter.android",
"com.facebook.katana"
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.journal_entry_menu, menu);
// Set up ShareActionProvider's default share intent
MenuItem shareItem = menu.findItem(R.id.action_share);
if (shareItem instanceof SupportMenuItem) {
mShareActionProvider = new ShareActionProvider(this);
mShareActionProvider.setShareIntent(ShareUtils.share(mJournalEntry));
mShareActionProvider.setIntentFilter(Arrays.asList(INTENT_FILTER));
mShareActionProvider.setShowHistory(false);
((SupportMenuItem) shareItem).setSupportActionProvider(mShareActionProvider);
}
return super.onCreateOptionsMenu(menu);
}
11
我找到了解決這個問題的方法。我正在使用支持庫23.0.1,我沒有在其他支持庫版本上測試過。
解決方案很簡單,當您創建ShareActionProvider時,只需重寫onCreateActionView()方法併爲其返回null即可。然後,您可以在彈出菜單中跟蹤所有歷史記錄,但歷史記錄不會顯示在工具欄中。
下面是一個代碼示例:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem item = menu.add(Menu.NONE, R.id.menu_share, Menu.NONE, R.string.share);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
mShareActionProvider = new ShareActionProvider(this) {
@Override
public View onCreateActionView() {
return null;
}
};
item.setIcon(R.drawable.abc_ic_menu_share_mtrl_alpha);
MenuItemCompat.setActionProvider(item, mShareActionProvider);
return true;
}
目前我還沒有發現使用此解決任何問題。
相關問題
- 1. 隱藏共享動作提供商附近共享動作圖標,而不ActionBarSherlock
- 2. Android:更改操作欄上的操作共享項的圖標
- 3. 如何隱藏上次共享圖標?
- 4. 共享主機操作系統或共享Container OS
- 5. 在操作欄中使用圖標設置共享意圖
- 6. 共享內存上的原子操作
- 7. 如何共享MSBuild目標中的任務/操作?
- 8. 在React Native中添加共享操作
- 9. 安全地共享操作系統'
- 10. Redux Thunk操作和共享狀態
- 11. iOS共享操作表 - iPad崩潰
- 12. Kohana Controller操作共享變量
- 13. 設計「共享」操作菜單
- 14. 操作共享首選項時出錯?
- 15. iOS快速操作與UIActivityViewController共享
- 16. 在MVC中跨操作共享Viewdata MVC
- 17. Redux操作和共享驗證
- 18. 設置操作欄上的自定義共享圖標ShareActionProvider
- 19. 從操作欄中的共享圖標丟失箭頭
- 20. 使用COM互操作向GAC安裝共享程序集
- 21. 與其他應用程序共享圖像時共享操作欄按鈕崩潰
- 22. Android - 如何隱藏操作欄上的應用程序圖標
- 23. 如何使用Windows 8觸發共享操作
- 24. 如何使用react-native-fbsdk共享操作?
- 25. 如何刪除操作欄中共享按鈕的邊框?
- 26. 如何爲sql lite操作調試共享的xamarin項目?
- 27. 如何在Android上編寫共享活動的操作?
- 28. 顯式共享與手錶操作不起作用
- 29. 在應用程序之間共享數據 - 共享內存vs D-Bus vs文件操作
- 30. 如何使共享操作圖標變成白色而不是灰色
http:// stackoverflow。com/questions/10706564/how-do-you-turn-share-share-history-when-using-shareactionprovider –