从Intent.createChooser获取选择的应用程序

 手机用户2502873425 发布于 2023-01-06 14:08

我试图捕获结果,Intent.createChooser以了解用户选择共享的应用程序.

我知道有很多与此相关的帖子:

如何知道用户在使用意向选择器时选择的应用程序?

/sf/ask/17360801/?rq=1

如何从startActivityForResult中获取用户选择(Intent.createChooser(fileIntent,"使用...打开文件"),APP_PICKED);?

在Android上捕获和拦截ACTION_SEND意图

但是这些帖子有些陈旧,我希望可能会有一些新的发展.

我正在尝试实现共享操作,而不会出现在菜单中.我想要的最接近的解决方案由ClickClickClack提供,他建议实施自定义应用程序选择器,但这似乎很重要.此外,似乎可能会有一些Android钩子来获取所选的应用程序,例如ActivityChooserModel.OnChooseActivityListener.

我的MainActivity中有以下代码,但该onShareTargetSelected方法永远不会被调用.

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, shareMessage());
    sendIntent.setType("text/plain");

    Intent intent = Intent.createChooser(sendIntent, getResources().getText(R.string.share_prompt));

    ShareActionProvider sap = new ShareActionProvider(this);
    sap.setShareIntent(sendIntent);
    sap.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener() {
        @Override
        public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
            System.out.println("Success!!");
            return false;
        }
    });

    startActivityForResult(intent, 1);

Benjamin.. 14

从API级别22开始,它现在实际上是可能的.在Android 5.1中createChooser (Intent target, CharSequence title, IntentSender sender),添加了一个方法(),允许接收用户选择的结果.当您提供IntentSenderto时createChooser,将ComponentName通过用户选择的选择器对话框通知发件人.它会在一个名为额外提供EXTRA_CHOSEN_COMPONENT的int IntentSender被通知.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有