2016-04-15 24 views
12

クロスウォークウェブビューでローカルビデオを再生したい。私は自分のアクティビティを開くインテントからビデオパスを取得しているので、内部またはSDカードに格納することができます。ローカルビデオをウェブビューで再生

このURLを使用してfile:///storage/emulated/0/Download/movies/movie.mp4私はFailed to load resource: net::ERR_ACCESS_DENIEDを取得します。

URL.createObjectURL(file);で入力ファイルダイアログを使用すると機能します。しかし、私はパスを知っているので、私は手動でもう一度それを選択したくない。入力ファイルの値の設定は禁止されています。

パスを使用してURLを作成することもできません。ファイルまたはBLOBが必要なためです。

大きなファイルサイズのため、一時的にSDカードにコピーできません。

これは私が見つからないエラーファイルを提供します:

@Override 
    public WebResourceResponse shouldInterceptLoadRequest(XWalkView view, 
                  String url) { 
     if(url.contains("file:///storage")){ 
      try { 
       return new WebResourceResponse("video/*", "UTF-8", new FileInputStream(url)); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
     } 
      return super.shouldInterceptLoadRequest(view, url); 
    } 

はまた、私は資産へのアクセスを求めてStackOverflowの上<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

他の質問を定義しているので、私はローカルにアクセスするには、この新しい質問

+0

あなたはテストに使用しているどのAndroidバージョンですか? –

+0

質問は[https://stackoverflow.com/questions/8885701/play-local-hard-drive-video-file-with-html5-video-tag](https://stackoverflow.com/questions/8885701)と一致しています/ play-local-hard-drive-video-file-with-html5-video-tag) –

+2

あなたのソリューションにこれを試してください[https://stackoverflow.com/questions/14194890/playing-local-video-in-webview- on-android](https://stackoverflow.com/questions/14194890/playing-local-video-in-webview-on-android) –

答えて

2

を作成しますmarshmellow以上を実行するアンドロイドデバイス上のファイルは、ファイルにアクセスする前に実行時にアクセス許可をチェックする必要があります。そうでない場合は、ここで

を破るだろう、それが実装されているチュートリアルです特にファイルのソースに応じて、ファイル https://www.androidhive.info/2016/11/android-working-marshmallow-m-runtime-permissions/

の読み取り、私はあなたがプレイする前にチェックしますがチェックしていないお勧めしますエントリポイントの直前。あなたは、ファイルの意図ピッカーを作成する直前に、あなたが書き込み権限をチェックし、GALLARYからメディア、またはファイルマネージャからファイルを選択しようとしている場合

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     if (requestCode == EXTERNAL_STORAGE_PERMISSION_CONSTANT) { 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       //The External Storage Write Permission is granted to you... Continue your left job... 
       proceedAfterPermission(); 
      } else { 
       //request again for permission or assume permission denied and alert the user 
      } 
     } 
    } 

たとえば、次に示すように、あなたがして続行します

あなたはまだリンクを勉強しておく必要があります。これは役に立ちます。

+0

AskerがBountyにリクエストしました。_ "" sdcardに保存されたローカルビデオをwebview通常MyDomain.com \ video.htm "' _のようなURLを開きます。 –

2

外部ストレージからビデオファイルにアクセスする際に問題が発生する可能性があります。また、実行時に読み取り/書き込み権限が与えられていることを確認してください。 ここであなたの解決策を見つけることができますherethis

+0

こんにちは、これは**低品質の回答**の危険性があります。1つの文章では不十分です_''「通常MyDomain.com \ video.htm "_のようなURLを開くwebviewを使ってsdcardに保存されたローカルビデオを再生する完全なソリューションを提供してください。あなたの最初のリンクはコメントで2日前に言及されました。また、2番目のリンクは2013年からあり、Android 4.4以降(2014年)では動作しないという警告があります。説明されたソリューションとテストされたサンプルコードを提供して、[** edit **](https://stackoverflow.com/posts/45469216/edit)をご覧ください。 –

関連する問題