我需要在我的应用程序内链接主动流式音频,以便它在我的应用程序内播放。
当我的 webView 方法不起作用并且在这里找不到可行的解决方案时,我扩大了范围并找到了另一种方法(https://android--examples.blogspot.com/2017/08/android-play-audio-from -url-http.html)但它不起作用。所以我回到了 webView 方法,并在下面包含了所有适用的代码。
活动的java文件
package com.app.sega;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class wvop extends AppCompatActivity {
private WebView webview_v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wvop);
webview_v = (WebView) findViewById(R.id.webview_wvop);
webview_v.setInitialScale(1);
webview_v.setWebViewClient(new WebViewClient_v());
webview_v.getSettings().getJavaScriptEnabled();
webview_v.getSettings().getLoadWithOverviewMode();
webview_v.getSettings().setUseWideViewPort(true);
webview_v.getSettings().setAllowFileAccess(true);
webview_v.getSettings().setAllowFileAccessFromFileURLs(true);
webview_v.getSettings().setAllowContentAccess(true);
webview_v.setScrollbarFadingEnabled(false);
webview_v.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webview_v.getSettings().getBuiltInZoomControls();
webview_v.getSettings().getUseWideViewPort();
webview_v.getSettings().setDomStorageEnabled(true);
webview_v.getSettings().setUserAgentString("silly_that_i_have_to_do_this");
webview_v.loadUrl("https://us7.maindigitalstream.com/2782/");
}
private class WebViewClient_v extends WebViewClient {
public boolean shouldOverrideURLLoading (WebView view, String url) {
if (Uri.parse(url).getHost().equals("https://us7.maindigitalstream.com/2782/")) {
return false;
}else {
Intent intent_wvop = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent_wvop);
return true;
}
}
}
}
活动的xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView android:id="@+id/webview_wvop"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
安卓清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.app.sega">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="andoir.permission.READ_PHONE_STATE" />
<uses-permission android:name="andoir.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="andoir.permission.GET_ACCOUNTS" />
<uses-permission android:name="andoir.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".facebook"
android:parentActivityName=".MainActivity"/>
<activity
android:name=".twitter"
android:parentActivityName=".MainActivity"/>
<activity
android:name=".wyum"
android:parentActivityName=".MainActivity"/>
<activity
android:name=".wtcq"
android:parentActivityName=".MainActivity"/>
<activity
android:name=".wvop"
android:parentActivityName=".MainActivity"/>
<activity
android:name=".sega"
android:parentActivityName=".MainActivity"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.sega" />
<action android:name="android.intent.action.wvop" />
<action android:name="android.intent.action.wtcq" />
<action android:name="android.intent.action.wyum" />
<action android:name="android.intent.action.twitter" />
<action android:name="android.intent.action.facebook" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我希望应用程序像加载任何其他 url 一样在 webview 中加载 url。这个 url/website 有一个打开流的按钮,但默认情况下,页面会在任何浏览器中加载时自动打开流并开始播放流音频。问题:虽然我可以在应用程序的 webview 中加载页面,但它不会打开并播放活动流。相反,我收到一条红色错误消息,说“发生错误,此播放器在没有 javascript 的情况下无法工作!” 这条消息有一个半透明的背景,我可以看到它后面的页面。所以应用程序正在加载页面,但似乎不是适当的 javascript。这正是我使用上面显示的代码所得到的。现在当我启用javascript时会发生什么......
试图通过将“true”添加到此行来启用 javascript 来修复此错误消息,如下所示...“webview_v.getSettings().getJavaScriptEnabled(true);” 当我尝试在任何实际或模拟设备上运行应用程序时,我收到以下 logCat 错误。
error: method getJavaScriptEnabled in class WebSettings cannot be applied to given types;
webview_v.getSettings().getJavaScriptEnabled(true);
^
required: no arguments
found: boolean
reason: actual and formal argument lists differ in length
1 error
我在上面的脚本中哪里出错了?我应该添加、删除、更改什么等。如果此 webview 方法不起作用或根本不适用于此类站点,那么此方法如何(https://android--examples.blogspot.com/2017/ 08/android-play-audio-from-url-http.html )? 它导致我的应用程序崩溃,滑到后台而不退出,并抛出此错误消息;“不幸的是,‘应用名称’已停止”。如果它可以工作,我会使用它,但我也无法弄清楚它出了什么问题。
当我拉扯头发试图弄清楚这一点时,我能感觉到我的头发越来越薄。