Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6185067
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T01:38:51+00:00 2026-05-24T01:38:51+00:00

I want to load .flv video in webview. I have taken help from this

  • 0

I want to load .flv video in webview.

I have taken help from this link, but the problem is I’m not able to view video in emulator.

This is my code:

package com.FlvTester;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.FrameLayout;

public class FlvTester extends Activity {

WebView webView;
String htmlPre = "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"></head><body style='margin:0; pading:0; background-color: black;'>";  
String htmlCode = 
        " <embed style='width:100%; height:100%'  src='http://www.platipus.nl/flvplayer/download/1.0/FLVPlayer.swf?fullscreen=true&video=@VIDEO@' " +
        "  autoplay='true' " +
        "  quality='high' bgcolor='#000000' " +
        "  name='VideoPlayer' align='middle'" + // width='640' height='480' 
        "  allowScriptAccess='*' allowFullScreen='true'" +
        "  type='application/x-shockwave-flash' " +
        "  pluginspage='http://www.macromedia.com/go/getflashplayer' />" +
        "";
String htmlPost = "</body></html>";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 

    webView = (WebView)findViewById(R.id.webview);

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setPluginsEnabled(true);


    htmlCode = htmlCode.replaceAll("@VIDEO@",  "file:///android_asset/expression_sad.flv");
    webView.loadDataWithBaseURL("file:///android_asset/expression_sad.flv",  htmlPre+htmlCode+htmlPost, "text/html", "UTF-8", null);  
}




@Override
protected void onPause(){
    super.onPause();

    callHiddenWebViewMethod("onPause");

    webView.pauseTimers();
    if(isFinishing()){
        webView.loadUrl("about:blank");
        setContentView(new FrameLayout(this));
    }
}

@Override
protected void onResume(){
    super.onResume();

    callHiddenWebViewMethod("onResume");

    webView.resumeTimers();
}

private void callHiddenWebViewMethod(String name){
    // credits: http://stackoverflow.com/questions/3431351/how-do-i-pause-flash- content-in-an-android-webview-when-my-activity-isnt-visible
    if( webView != null ){
        try {
            Method method = WebView.class.getMethod(name);
            method.invoke(webView);
        } catch (NoSuchMethodException e) {
            //Lo.g("No such method: " + name + e);
        } catch (IllegalAccessException e) {
            //Lo.g("Illegal Access: " + name + e);
        } catch (InvocationTargetException e) {
            //Lo.g("Invocation Target Exception: " + name + e);
        }
    }
  }

}

I got this error in log cat

 07-06 12:00:48.567: WARN/dalvikvm(381): threadid=1: thread exiting with uncaught     exception (group=0x4001d800)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381): FATAL EXCEPTION: main
 07-06 12:00:48.597: ERROR/AndroidRuntime(381): java.lang.RuntimeException: Unable to  start activity ComponentInfo{com.FlvTester/com.FlvTester.FlvTester}:   java.lang.ClassCastException: android.widget.VideoView
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at    android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.os.Handler.dispatchMessage(Handler.java:99)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.os.Looper.loop(Looper.java:123)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.app.ActivityThread.main(ActivityThread.java:4627)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at java.lang.reflect.Method.invokeNative(Native Method)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at java.lang.reflect.Method.invoke(Method.java:521)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at dalvik.system.NativeStart.main(Native Method)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381): Caused by: java.lang.ClassCastException: android.widget.VideoView
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at com.FlvTester.FlvTester.onCreate(FlvTester.java:31)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
 07-06 12:00:48.597: ERROR/AndroidRuntime(381):     ... 11 more

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent"  android:layout_height="fill_parent"   xmlns:android="http://schemas.android.com/apk/res/android">

<WebView android:layout_width="match_parent" android:id="@+id/webview"  android:layout_height="match_parent"></WebView> 
</LinearLayout>

Update

this is new image

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-24T01:38:52+00:00Added an answer on May 24, 2026 at 1:38 am

    You don’t state clearly what your Android version, however I can confirm that the flash plugin does load and the movie player does intilaize with the swirly shape graphic. I can engage it into fullscreen mode. I am also able to play online video but not from the application’s assets folder, however I do have a workaround.

    The following permissinos are required in your manifest.xml:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission> <!-- where required -->
    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
    

    Interestingly I discovered I was only able to run the SWF player from the assets folder when the html was statically loaded i.e when I created an html file and loaded that directly from the assets folder using loadUrl(). There seems to be something blocking access to the application directory when html data is loaded using the loadDataBaseUrl method.

    To succesfully get video to play from the local device a static html file and the video must be co-located on the sdcard. My only conclusion is that the assets folder is off limits to the embedded plugin for security reasons.

    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
        Log.d(TAG, "No SDCARD");
    } else {
        webView.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/FLVplayer/index.html");
        }
    

    And here is the html file

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    </head>
    <body style="margin:0; pading:0; background-color: black;">
    <embed
     style="width:100%; height:100%"
     src="./FLVPlayer.swf?fullscreen=true&video=./expression_sad.flv"
     autoplay="true"
     quality="high"
     bgcolor="#000000"
     name="VideoPlayer"
     align="middle"
     allowScriptAccess="*"
     allowFullScreen="true"
     type="application/x-shockwave-flash"
     pluginspage="http://www.macromedia.com/go/getflashplayer">
     </embed>
    </body>
    </html>
    

    This is a 100% working solution but you would have to write your html file to the sdcard before calling loadUrl to dynaamically replace the video file name. In addition you should copy the video from your assets folder into the same path on the sdcard (as you can see from my exaple I created a folder called FLVplayer.

    Test performed on Samsung Galaxy Tab running Froyo(2.2)

    UPDATE

    I am including a complete activity that has been tested and working. This expects a copy of the Flash player, the FLV file and the index.html file to be placed in a folder called “FLVplayer” on the root of your sdcard which you can copy across using the file explorer. You can edit the various utility functions to modify the behaviour to copy the files from your assetes folder

    package com.FLVplayer;
    
    import java.io.File;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    import android.app.Activity;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    import android.webkit.WebView;
    import android.widget.FrameLayout;
    
    public class FLVplayerActivity extends Activity {
    
    private static final String TAG="FLVplayer";
    private static WebView webView;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
    
        webView = (WebView)findViewById(R.id.webview);
    
        //WebView webview = new WebView(this); 
        //setContentView(webview);
    
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setPluginsEnabled(true);
    
        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            Log.d(TAG, "No SDCARD");
        } else {
    
            //prepare the directory
            File flvDirectory = new File(Environment.getExternalStorageDirectory(),"FLVplayer");
    
            if(!flvDirectory.exists())
                try {
                    flvDirectory.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            //specify the html file name to use
            File flvHtml = new File(flvDirectory,"index.html");
    
            //copy what you need
            copySwfAsset(flvDirectory, "FLVPlayer.swf");
            copyFlvAsset(flvDirectory, "20051210-w50s.flv");
    
            //render the html
            createVideoHtml(flvHtml, "20051210-w50s.flv");
    
            //load the content into the webview
            webView.loadUrl(Uri.fromFile(flvHtml).toString());
    
            //sit back, watch FLV and eat popcorn
        }
    }
    
    private void createVideoHtml(File htmlFile, String htmlFileName)
    {
        //TODO render your own html file to sdcard
    }
    
    private void copySwfAsset(File flvDirectory, String flashFileName)
    {
        //TODO copy your own SWF video player file from assets
    }
    
    private void copyFlvAsset(File flvDirectory, String videoFileName)
    {
        //TODO copy your oown FLV file from asset folder
    }
    
    @Override
    protected void onPause(){
        super.onPause();
    
        callHiddenWebViewMethod("onPause");
    
        webView.pauseTimers();
        if(isFinishing()){
            webView.loadUrl("about:blank");
            setContentView(new FrameLayout(this));
        }
    }
    
    @Override
    protected void onResume(){
        super.onResume();
    
        callHiddenWebViewMethod("onResume");
    
        webView.resumeTimers();
    }
    
    private void callHiddenWebViewMethod(String name){
        // credits: http://stackoverflow.com/questions/3431351/how-do-i-pause-flash- content-in-an-android-webview-when-my-activity-isnt-visible
        if( webView != null ){
            try {
                Method method = WebView.class.getMethod(name);
                method.invoke(webView);
            } catch (NoSuchMethodException e) {
                //Lo.g("No such method: " + name + e);
            } catch (IllegalAccessException e) {
                //Lo.g("Illegal Access: " + name + e);
            } catch (InvocationTargetException e) {
                //Lo.g("Invocation Target Exception: " + name + e);
            }
        }
      }
    
    }
    

    ADENDUM

    I believe there may be a way to bypass the security issues by intercepting the URL of the various files and returning the data directly from the assets folder using WebViewClient.shouldInterceptRequest() but that requires API 11 so not suitable as a generic solution.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a class which load and play a flv video file. My problem
I want to load a palette from a bitmap file I have created. The
I want load into div example_id file status.gsp. But application have access denied to
I want load html code with jQuery and delete from this code some classes,
I want load html with ajax. But i have problems with it. When you
I want to load data from several CSV documents in a database. The problem
I want to load data from MySql database to a HTTP form When I
I want to load PNG-file from resources. There is a roughly MFC-way (with CResourceStream
I want to load defined folders into my website from same system, now I
Not entirely sure how to do this, but I noticed that Facebox works perfectly,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.