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

时间:2014-10-10 08:03:53

标签: android file android-intent share provider

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

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

这是我的代码:

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();
    }

我的活动听众:

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);
            }
        });

我被封锁了......

2 个答案:

答案 0 :(得分:1)

终于有效了!你的代码给了我很多帮助,但是我没有做你告诉我要做的事,这是我的代码:

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 :(得分:0)

创建一个像这样的选择:

            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);