この答えには解決策がありません、私はあなた自身を完全に転がさずにこのタスクを不可能と評価します。
私は完全に同意します。必要なときにリスナーを使用してデータをプルする必要がありますが、同時に、インテントを処理できるアプリのみが表示されるため、このように機能します。
これは、インテントを共有する前に、インテントを提供して、<intent-filter>
sにそのことを実行させ、互換性のないアクティビティをフィルタリングする必要があることを意味します。この問題は、<data>
フィルターにUriとMimeTypeをフィルターする要素が含まれている場合に発生します。
これを回避してみましょう。
OnShareTargetSelectedListenerを使用する
@hannes archdoSomeStuff
は何かに取り組んでいましたが、の実装となる答えから答えが欠落しています。
ああ、ブール値を返します。インテントを更新してaを実行し、それを処理したことを示すためにstartActivity(intent)
戻ります。の戻り値を無視しtrue
ていることが判明したため、それを使用することはできません。ShareActivityChooserModelPolicy
onShareTargetSelected
そうすることで、同じような内容(元の意図と変更された意図)の同じ活動が可能になります。ユーザーにはそれほど親切ではありません。
拡張するShareActionProvider
リスナーに必要なロジックを複製ShareActivityChooserModelPolicy
し、リスナーから返された値を返します。このように私たちreturn true
は動作します。代わりにそうではありません。選択したアプリの履歴を保持する機能が失われます。
ShareActionProvider
テイク2を延長
私は試してみましたが、厄介な反省やsetAccessible
呼び出しがあっても、このクラスを拡張する方法はありません。硬すぎます。
コピーShareActionProvider
および関連するクラス。いいえ、Androidの内部クラスに依存しているため機能しません。
締めくくりの言葉
何だろう
動作は拡張可能であり、ShareActionProviderの拡張機能は、履歴ファイルに基づいてさまざまな動作とランク付けを実行できます(適切な場合)。
https://developer.android.com/guide/topics/ui/actionbar.htmlからの意味