繁体   English   中英

从共享列表中隐藏自己的隐式意图

[英]Hide own implicit Intent from share list

Twitter Android应用程序具有(至少)两个意图过滤器。 一种是发推文,一种是直接发短信。

当您想通过Twitter(从另一个应用程序)共享某些东西时,通常会在隐式意图列表中看到这两个项目(如下面的第一张图所示)。

从另一个应用程序共享到Twitter,例如铬

当您想从Twitter应用程序共享某些内容时,您将获得相同的意图,但只有一个选项(直接发送消息)。 其他选项已以某种方式删除。 请参阅第二张图片以供参考。

从Twitter分享

我的问题是,Twitter应用程序如何做到这一点?

我相信他们查询可以处理内容的应用程序,并从那里删除自己的意图(推文),并在自定义的BottomSheet中显示结果。 我认为是这种情况,因为BottomSheet的退出动画与其他应用程序的标准Share BottomSheet动画有点不同。

如果不是自定义的,还有另一种方法可以过滤自己的应用中的意图?

尝试通过您想要在对话框中显示的应用程序进行共享

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);
    }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM