在透明活动中打开对话框;通过“共享”;用例android

在透明活动中打开对话框;通过“共享”;用例android,android,android-activity,transparency,android-dialog,Android,Android Activity,Transparency,Android Dialog,如何在“通过共享”用例中打开对话框而不是活动。 当用户按下“Share via”时,我想显示一个对话框,以便发送共享意图的应用程序的活动在后台仍然可见。 Pinterest通过其“创建Pin”用例实现了这一点。 (当我按下“创建Pin”时,唯一显示给我的是“浏览图像”对话框) 谢谢。您可以像这样在设备上调用其他应用程序的意图来打开此类对话框 Intent share = new Intent(Intent.ACTION_SEND); share.setType("text/pla

如何在“通过共享”用例中打开对话框而不是活动。 当用户按下“Share via”时,我想显示一个对话框,以便发送共享意图的应用程序的活动在后台仍然可见。 Pinterest通过其“创建Pin”用例实现了这一点。 (当我按下“创建Pin”时,唯一显示给我的是“浏览图像”对话框)


谢谢。

您可以像这样在设备上调用其他应用程序的意图来打开此类对话框

    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("text/plain");

    List<ResolveInfo> resInfo = yourActivity.getPackageManager().queryIntentActivities(share, 0);
    if (!resInfo.isEmpty()) {
        List<Intent> targetedShareIntents = new ArrayList<Intent>();
        Intent targetedShareIntent = null;

        for (ResolveInfo resolveInfo : resInfo) {
            String packageName = resolveInfo.activityInfo.packageName;
            targetedShareIntent = new Intent(Intent.ACTION_SEND);
            targetedShareIntent.setType("text/plain");

            switch(packageName){ // works with java 7 
                case "com.twitter.android" :
                    targetedShareIntent.putExtra(Intent.EXTRA_TEXT,  "shared content on twitter");
                    break ;
                case "com.facebook.katana" :
                    targetedShareIntent.putExtra(Intent.EXTRA_TEXT,  "shared content on facebook");
                    break ;
                case "com.google.android.gm" :
                    targetedShareIntent.putExtra(Intent.EXTRA_TEXT,  "shared content on Gmail");
                    break ;
                default :
                    targetedShareIntent.putExtra(Intent.EXTRA_TEXT,  "shared content on other app");
            }

            targetedShareIntent.setPackage(packageName);
            targetedShareIntents.add(targetedShareIntent);
        }

        Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share via");
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
        startActivityForResult(chooserIntent, 0);
    }
Intent共享=新的Intent(Intent.ACTION\u发送);
share.setType(“文本/普通”);
List resInfo=yourActivity.getPackageManager().QueryInputActivities(共享,0);
如果(!resInfo.isEmpty()){
List targetedShareContents=new ArrayList();
意图targetedShareContent=null;
对于(ResolveInfo ResolveInfo:resInfo){
字符串packageName=resolveInfo.activityInfo.packageName;
targetedShareIntent=新意图(Intent.ACTION\u SEND);
targetedShareContent.setType(“文本/普通”);
开关(packageName){//适用于java 7
案例“com.twitter.android”:
targetedShareIntent.putExtra(Intent.EXTRA_文本,“twitter上的共享内容”);
打破
案例“com.facebook.katana”:
targetedShareIntent.putExtra(Intent.EXTRA_文本,“facebook上的共享内容”);
打破
案例“com.google.android.gm”:
targetedShareContent.putExtra(Intent.EXTRA_文本,“Gmail上的共享内容”);
打破
违约:
targetedShareContent.putExtra(Intent.EXTRA_文本,“其他应用程序上的共享内容”);
}
targetedShareContent.setPackage(packageName);
targetedShareIntents.add(targetedShareIntent);
}
Intent chooserentent=Intent.createChooser(targetedShareContents.remove(0),“通过共享”);
选择content.putExtra(Intent.EXTRA_INITIAL_INTENTS,targetedShareContents.toArray(新包裹[]{}));
startActivityForResult(选择内容,0);
}

在这种情况下,我的活动是在后台进行的。我的意思是,当用户通过我的应用程序调用“共享”时,我希望我的应用程序将显示一个进度对话框,直到我完成后台工作。在这段时间里,我想要的只是一个进度对话框,背景应该是另一个应用程序的活动(通过“共享”完成的应用程序)尝试通过dolphin浏览器或类似的东西来“创建Pin”,你会明白我的意思。