2016-03-30 12 views
2

TwitterのAndroidアプリには、少なくとも2つのインテントフィルタがあります。ツイート用とダイレクトメッセージ用。自分の暗黙のインテントをシェアリストから隠す

twitter(別のアプリから)で何かを共有したい場合は、通常、暗黙のインテントリストに両方の項目が表示されます(下の最初の画像のように)。

Sharing to Twitter from another app, e.g. Chrome

あなたはTwitterアプリから何かを共有したいときは、同じ目的を得るが、(ダイレクトメッセージ)が唯一のオプション付き。他のオプションは何とか削除されます。参照のために2番目のイメージを参照してください。

Sharing from Twitter

私の質問

は、Twitterのアプリは、これをどのように行うんですか?

私はコンテンツを処理し、そこから独自のインテント(Tweet)を削除し、結果をカスタムBottomSheetに表示できるアプリにクエリを実行すると信じています。 BottomSheetのExit Animationは他のアプリの標準Share BottomSheetアニメーションとは少し異なるため、これが当てはまると思います。

カスタムではない場合は、自分のアプリで独自のインテントをフィルタリングする別の方法がありますか?

答えて

0

ダイアログ

public void onShareClick(View v){ 
List<Intent> targetShareIntents=new ArrayList<Intent>(); 
Intent shareIntent=new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.setType("text/plain"); 
List<ResolveInfo> resInfos=getPackageManager().queryIntentActivities(shareIntent, 0); 
if(!resInfos.isEmpty()){ 
    System.out.println("Have package"); 
    for(ResolveInfo resInfo : resInfos){ 
     String packageName=resInfo.activityInfo.packageName; 
     Log.i("Package Name", packageName); 
     if(packageName.contains("com.twitter.android") || packageName.contains("com.facebook.katana") || packageName.contains("com.kakao.story")){ 
      Intent intent=new Intent(); 
      intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name)); 
      intent.setAction(Intent.ACTION_SEND); 
      intent.setType("text/plain"); 
      intent.putExtra(Intent.EXTRA_TEXT, "Text"); 
      intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
      intent.setPackage(packageName); 
      targetShareIntents.add(intent); 
     } 
    } 
    if(!targetShareIntents.isEmpty()){ 
     System.out.println("Have Intent"); 
     Intent chooserIntent=Intent.createChooser(targetShareIntents.remove(0), "Choose app to share"); 
     chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{})); 
     startActivity(chooserIntent); 
    }else{ 
     System.out.println("Do not Have Intent"); 
     showDialaog(this); 
    } 
} 
} 
+0

に表示するアプリケーションを通じて共有するため、このいずれかを試してみてくださいありがとうございましたが、それは質問に答えていません。私はこの方法を知っています。私は手動でフィルターをかけることができると知っていますが、私の質問は他の方法があるかどうかです。 – peshkira

+0

他の方法があるかもしれないが、私はTwitterの人が手動でやっていると思う。 – Nitesh

+0

あなたが知っている他の方法は何ですか?なぜあなたはTwitterが手動でそれをやっていると思いますか? – peshkira

関連する問題