2013-01-10 43 views
1

我想阻止ShareActionProvider無法寫入任何歷史文件。我試圖找到從共享菜單中選擇共享應用程序時調用哪個回調函數,但未找到回調方法。我想找到哪個回調方法做更新共享歷史文件的工作。這將幫助我重寫該方法並更改行爲。防止ShareActionProvider從寫入共享歷史文件

+0

一個開始研究的好地方是源頭,你試過了嗎? https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/ShareActionProvider.java – Budius

+0

是。我擴展了ShareActionProvider類,並覆蓋了所有的方法(每個方法都有記錄器)。當創建視圖時,第一次調用了許多方法。但是在選擇一個菜單項時,沒有任何方法被調用並且視圖被更新。 –

+0

我自己並沒有深入瞭解代碼,但很可能它是一種私有或受保護的方法,因此您無法覆蓋,但也許代替擴展它,您可以複製整個代碼並根據需要進行修改;) – Budius

回答

0

我覺得我們的意見後,你能回答自己的問題,但你沒有所以這裏有雲:

你有兩種選擇,而這些都是基於這樣的結論,你將不能夠直接覆蓋的東西,以避免歷史,所以:

1)這裏有所有的原始類的鏈接,你複製這些到項目,並建立了一個NoHistoryShareActionProvider。 ShareActionProvider,ActivityChooserView,ActivityChooserModel並且在GrepCode上你可以找到任何其他必要的類。

2)步驟一類回來,並創建從ActionProvider模仿ShareActionProvider SANS的外觀歷史上的一個子類。

我同意,無論是長和解決方案,將是巨大的,有一個簡單的配置,其中決定有和無的,但是這是怎麼回事。

編碼快樂!