我正在尝试通过youtube应用播放youtube视频,这些视频在我的网页浏览中是youtube链接,但我用google搜索它,我没有得到任何解决方案打开或启动youtube活动强迫我提出这个问题
我已尝试过下面的代码,但它只是强制关闭,可能是因为我已经在我的网页视图中有另一个意图了。
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + video_id);
startActivity(intent);
顶级代码正在关闭我的应用程序。
我的另一个目的就是完美地播放与播放与youtube无关的其他格式的视频。
我想让我的youtube链接在youtube应用中播放,但我无法做到,因为某处出现了问题。
Main.java
import java.util.List;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ResolveInfo;
@SuppressLint("SetJavaScriptEnabled")
public class Main extends Activity {
public final boolean networkCheck() {
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
return true;
} else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
return false;
}
return false;
}
WebView mWebView;
ProgressBar loadingProgressBar,loadingTitle;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setPluginState(PluginState.ON);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.loadUrl("http://..(my webview link goes here).......html");
loadingProgressBar=(ProgressBar)findViewById(R.id.progressbar_Horizontal);
mWebView.setWebChromeClient(new WebChromeClient() {
// this will be called on page loading progress
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
loadingProgressBar.setProgress(newProgress);
//loadingTitle.setProgress(newProgress);
// hide the progress bar if the loading is complete
if (newProgress == 100) {
loadingProgressBar.setVisibility(View.GONE);
} else{
loadingProgressBar.setVisibility(View.VISIBLE);
}
}
});
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
List<ResolveInfo> infos = getPackageManager().queryIntentActivities(intent, 0);
if (infos.size() == 0) {
// apparently nothing can handle this URL
return false;
}
for (ResolveInfo info : infos) {
if (info.activityInfo.packageName.equals("com.android.browser")) {
view.loadUrl(url);
return true;
}
}
startActivity(intent);
return true;
}
});
if(networkCheck()) {
// INTERNET IS AVAILABLE, DO STUFF..
} else {
mWebView.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
mWebView.loadUrl("file:///android_asset/myerrorpage.html");
}
});
}
if(networkCheck()) {
// INTERNET IS AVAILABLE, DO STUFF..
} else {
AlertDialog alertDialog = new AlertDialog.Builder(Main.this).create();
alertDialog.setTitle("Internet Disconnected");
alertDialog.setMessage("No Internet Connection,Enable Internet connection to access the App");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
} });
alertDialog.show();
}
}
@Override
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onUserLeaveHint() {
finish();
}
}
不建议我使用youtube api因为我对此不感兴趣。
任何帮助将不胜感激。
先谢谢。
答案 0 :(得分:0)
您可以共享崩溃堆栈跟踪吗?它应该在logcat中可用。然后我可以根据需要改进答案。我看到了代码中的几个问题,如图所示。
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube://" + video_id);
Youtube URI的方案不是分层的,您应该删除//
。WebViewClient
实例,这些实例将相互覆盖。这真的是你想要的行为吗?