首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据我们在共享菜单中选择的应用程序发送不同的文件?

如何根据我们在共享菜单中选择的应用程序发送不同的文件?
EN

Stack Overflow用户
提问于 2014-10-10 08:03:52
回答 2查看 112关注 0票数 0

我有个问题。我需要创建一个服务,该服务发送一个mp3文件,该文件从一个活动发送的字符串中合成语音,或者一个mp4文件。我能够创建mp3文件和mp4文件。我还知道如何在“共享”菜单中设置其中一个。

我的问题是,我想看到每个应用程序,它可以处理mp3和mp4文件,然后将正确的文件发送到选择的应用程序。

这是我的密码:

代码语言:javascript
复制
public void setShareContent(MenuItem item, ShareActionProvider mShareActionProvider) {
        this.setActionMenu(item,mShareActionProvider);
        Intent mIntent = new Intent();
        mIntent.setAction(Intent.ACTION_SEND);
        Uri uri = Uri.parse("file:///"+Environment.getExternalStorageDirectory()+"/sounds/hello.mp3");

        mIntent.putExtra(Intent.EXTRA_STREAM,uri);
        mIntent.setType("audio/mp3");
        mShareActionProvider.setShareIntent(mIntent);
    }

    private void setActionMenu(MenuItem item, ShareActionProvider mShareActionProvider) {
        mShareActionProvider = (ShareActionProvider) item.getActionProvider();
    }

我的听众来自我的活动:

代码语言:javascript
复制
btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                message = text.getText().toString();
                myHashReader = new HashMap<String, String>();
                myHashReader.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, message);

                String exStroragePath = Environment.getExternalStorageDirectory().getAbsolutePath();

                File tmpPath = new File(exStroragePath + "/sounds/");
                tmpPath.mkdirs();

                String tmpFileName = "hello.mp3";

                tmpDestFile = tmpPath.getAbsolutePath() + "/" + tmpFileName;
                new MySpeech(MyActivity.this, message, tmpDestFile);
                myService.setShareContent(item, mShareActionProvider);
            }
        });

我被封锁了几天..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-10 08:12:35

创建一个这样的选择器:

代码语言:javascript
复制
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
            intent.setType("mp3/*");

            Intent musicIntent = new Intent(android.provider....);

            Intent chooser = new Intent(Intent.ACTION_CHOOSER);
            chooser.putExtra(Intent.EXTRA_INTENT, musicIntent);
            chooser.putExtra(Intent.EXTRA_TITLE, "Select from:");

            Intent[] intentArray = { musicIntent };
            chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
            startActivityForResult(chooser, REQUEST_PIC);
票数 0
EN

Stack Overflow用户

发布于 2014-10-10 09:21:28

终于起作用了!你的代码帮了我很大的忙,但我没有按你说的做,这是我的代码:

代码语言:javascript
复制
public void setShareContent(MenuItem item, ShareActionProvider mShareActionProvider) {
                    this.setActionMenu(item,mShareActionProvider);
                    Intent mIntent = new Intent();
                    Uri uri = Uri.parse("file:///"+Environment.getExternalStorageDirectory()+"/sounds/hello.mp3");

                    mIntent.putExtra(Intent.EXTRA_STREAM,uri);
                    mIntent.setType("audio/mp3");

                    Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
                    intent.setType("mp3/*");

                    Intent chooser = new Intent(Intent.ACTION_CHOOSER);
                    chooser.putExtra(Intent.EXTRA_TITLE, "Select from : ");
                    chooser.putExtra(Intent.EXTRA_INTENT, mIntent);

                    mShareActionProvider.setShareIntent(chooser);
                }

                private void setActionMenu(MenuItem item, ShareActionProvider mShareActionProvider) {
                    mShareActionProvider = (ShareActionProvider) item.getActionProvider();
                }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26294610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档