我正在使用jsoup抓取一些音频文件源URL,并将它们存储在字符串中。如果该字符串以后不为null,则将使用onClick侦听器创建一个按钮来播放该文件。此方法有效,但在不同页面上进行测试时已损坏。如果将setDatasource直接设置为将被抓取的URL,则它可以工作,因此不是解码器问题。这是发生问题的地方。

if (play1 != null) {

            LinearLayout linearLayout = (LinearLayout) findViewById(R.id.buttonPanel);
            final Button btn = new Button(MainActivity.this);
            btn.setText("Play");
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    try {



                        mp.reset();
                        mp.setDataSource(play1);
                        mp.prepareAsync();
                        mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                            @Override
                            public void onPrepared(MediaPlayer mp) {
                                mp.start();
                            }
                        });


                    } catch (IllegalArgumentException e) {
                        e.printStackTrace();
                    } catch (IllegalStateException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });

            try{
                linearLayout.addView(
                        btn,
                        new LinearLayout.LayoutParams(
                                LinearLayout.LayoutParams.WRAP_CONTENT,
                                LinearLayout.LayoutParams.WRAP_CONTENT)
                );
            } catch (NullPointerException e) {
            e.printStackTrace();
        }

        }


如果您想重现问题,我已经包含了重现所需的项目主要功能。
Here是与key变量一起使用的代码示例,此处重点是dataSource String。

here是相同代码的示例,唯一的变化是对dataSource String的修改,而这一修改不起作用。

如果要运行此代码进行检查,则需要导入Jsoup库并添加my checker class

最佳答案

更换


mp.setDataSource(play1);


创建人:


mp.setDataSource(play1.replaceAll(“”,“%20”)));

10-07 15:11