为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android中自定义共享意图?

如何在Android中自定义共享意图?

慕莱坞森 2019-11-13 14:23:57
现在我可以使用共享意图打开共享对话框    Intent intent = new Intent(Intent.ACTION_SEND);    intent.setType("text/plain");    intent.putExtra(Intent.EXTRA_TEXT, link);      startActivity(Intent.createChooser(intent, "Share with"));但我需要对话框不出现并直接共享给一个社交网络(例如FB或Twitter)有什么建议怎么做?
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

不,你不能。意向应该以这种方式工作。如果必须强制打开某个特定应用程序,请在目标应用程序支持的情况下使用明确的意图。在不知道目标应用程序的程序包名称或组件名称,数据类型或MIME类型的情况下,您不能强制特定的应用程序在通用意图上运行。


查看完整回答
反对 回复 2019-11-13
?
当年话下

TA贡献1890条经验 获得超9个赞

有一种方法可以直接打开您想要的意图。您可以获得意向列表,仅打开一个。


参见以下代码:


private void initShareIntent(String type) {

    boolean found = false;

    Intent share = new Intent(android.content.Intent.ACTION_SEND);

    share.setType("image/jpeg");


    // gets the list of intents that can be loaded.

    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0);

    if (!resInfo.isEmpty()){

        for (ResolveInfo info : resInfo) {

            if (info.activityInfo.packageName.toLowerCase().contains(type) || 

                    info.activityInfo.name.toLowerCase().contains(type) ) {

                share.putExtra(Intent.EXTRA_SUBJECT,  "subject");

                share.putExtra(Intent.EXTRA_TEXT,     "your text");

                share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(myPath)) ); // Optional, just if you wanna share an image.

                share.setPackage(info.activityInfo.packageName);

                found = true;

                break;

            }

        }

        if (!found)

            return;


        startActivity(Intent.createChooser(share, "Select"));

    }

}

如果您想打开Twitter,请执行以下操作:


initShareIntent("twi");

如果是facebook:


initShareIntent("face");

如果邮件:


initShareIntent("mail"); // or "gmail"

如果要显示与类型匹配的意图列表,请使用第一个机器,请参阅此文章:Android Intent for Twitter application

查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 389 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信