Android:将自定义选项添加到选择器意图

Android:将自定义选项添加到选择器意图,android,Android,在我的android应用程序中,我需要允许用户共享一些元素。我想启用的共享方法是Facebook、twitter和一个自定义表单,用户在其中输入电子邮件和一些信息,应用程序会将元素发送到此电子邮件。到目前为止,我掌握的代码是: private void share(List<String> appNames, String imagePath, String text) { List<Intent> targetedShareIntents = new A

在我的android应用程序中,我需要允许用户共享一些元素。我想启用的共享方法是Facebook、twitter和一个自定义表单,用户在其中输入电子邮件和一些信息,应用程序会将元素发送到此电子邮件。到目前为止,我掌握的代码是:

private void share(List<String> appNames, String imagePath, String text) {
        List<Intent> targetedShareIntents = new ArrayList<Intent>();
        Intent share = new Intent(android.content.Intent.ACTION_SEND);
        share.setType("image/jpeg");
        List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);
        if (!resInfo.isEmpty()){
            for (ResolveInfo info : resInfo) {
                Intent targetedShare = new Intent(android.content.Intent.ACTION_SEND);
                targetedShare.setType("image/jpeg"); // put here your mime type
                for(String nameApp : appNames){
                    if (info.activityInfo.packageName.toLowerCase().contains(nameApp) ||  info.activityInfo.name.toLowerCase().contains(nameApp)) {
                        targetedShare.putExtra(Intent.EXTRA_TEXT, text);
                        targetedShare.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(imagePath)) );
                        targetedShare.setPackage(info.activityInfo.packageName);
                        targetedShareIntents.add(targetedShare);
                    }
                }

            }

            Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), getString(R.string.share_dialog_title));
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
            startActivity(chooserIntent);
        }
    }
private void共享(列出appNames、字符串imagePath、字符串文本){
List targetedShareContents=new ArrayList();
意向共享=新意向(android.content.Intent.ACTION\u SEND);
share.setType(“图像/jpeg”);
List resInfo=getPackageManager().queryInputActivities(共享,0);
如果(!resInfo.isEmpty()){
对于(ResolveInfo:resInfo){
Intent targetedShare=新意图(android.content.Intent.ACTION\u SEND);
targetedShare.setType(“image/jpeg”);//在这里输入mime类型
用于(字符串名称app:appNames){
if(info.activityInfo.packageName.toLowerCase().contains(nameApp)| info.activityInfo.name.toLowerCase().contains(nameApp)){
targetedShare.putExtra(Intent.EXTRA_TEXT,TEXT);
targetedShare.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(新文件(imagePath));
targetedShare.setPackage(info.activityInfo.packageName);
targetedShareContents.add(targetedShare);
}
}
}
Intent chooserentent=Intent.createChooser(targetedShareContents.remove(0)、getString(R.string.share_dialog_title));
选择content.putExtra(Intent.EXTRA_INITIAL_INTENTS,targetedShareContents.toArray(新包裹[]{}));
开始触觉(选择内容);
}
}
其中
appNames
private static final String[]sharingMethods={“face”,“twi”}

这与预期的一样,允许用户在Facebook和Twitter之间进行选择,但我不知道如何向选择器添加自定义活动。 这是可能的还是我应该建立自己的选择器活动?有人能给我指出正确的方向吗


谢谢

据我所知,在显示android共享对话框的同时,您需要在Facebook和Twitter上显示自己的自定义活动

为此,您需要在该活动的清单中添加操作“android.content.Intent.action\u SEND”及其mime类型。例如:

<activity android:name="ShareActivity">
<intent-filter>
    <action android:name="android.intent.action.SEND"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/plain"/>
    <data android:mimeType="image/*"/>
</intent-filter>

我成功地将我的自定义活动添加到选择器,并且我能够自定义出现在选择器上的标题,但我不知道如何更改图标。目前,它显示了应用程序图标,但我想更改它,有可能吗?好的,我回答了我之前的问题,对于自定义我在活动定义中使用的android图标:icon=“@drawable/icon_custom”>。