2016-03-30 70 views
2

Twitter Android應用程序具有(至少)兩個意圖過濾器。一個用於推文,另一個用於直接消息。從共享列表中隱藏自己的隱含意圖

當你想通過Twitter(從另一個應用程序)分享的東西時,你通常會看到隱式意圖列表中列出的兩個項目(如下面的第一個圖像)。

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

當你想從Twitter的應用程序共享的東西,你會得到同樣的意圖,但只有一個選項(以直接留言)。其他選項以某種方式被刪除。查看第二張圖片以供參考。

Sharing from Twitter

我的問題是,如何在Twitter的應用程序做到這一點?

我相信他們會查詢可以處理內容的應用程序,並從那裏刪除他們自己的意圖(Tweet),並在自定義BottomSheet中顯示結果。我相信這是事實,因爲BottomSheet的出口動畫與其他應用的標準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

顯示非常感謝你的應用程序共享,但不回答這個問題。我知道這種方式,我知道我可以手動過濾,但我的問題是是否有其他方式,或者Twitter是否也這樣做。 – peshkira

+0

可能還有其他方法,但我認爲Twitter的人正在做手動。 – Nitesh

+0

你知道的其他方式是什麼?你爲什麼認爲Twitter手動進行? – peshkira