在透明活动中打开对话框;通过“共享”;用例android
如何在“通过共享”用例中打开对话框而不是活动。 当用户按下“Share via”时,我想显示一个对话框,以便发送共享意图的应用程序的活动在后台仍然可见。 Pinterest通过其“创建Pin”用例实现了这一点。 (当我按下“创建Pin”时,唯一显示给我的是“浏览图像”对话框)在透明活动中打开对话框;通过“共享”;用例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
谢谢。您可以像这样在设备上调用其他应用程序的意图来打开此类对话框
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”,你会明白我的意思。