【分享】+『求助』 webview 播放不了 flash

hotkarriver 2011-09-08 01:16:17
我已经在代码里加了mWebView.getSettings().setPluginState(PluginState.ON);
但是还是不能播放flash,一片空白啊,是在真机上,不是模拟器!
browser是可以播放的,已经安装了flash 10.3 for android

接下来贴上我的代码,有需要的可以参考:


package com.WebViewTest;

import java.io.File;
import java.io.FileOutputStream;

import com.WebViewTest.R;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Picture;


public class WebViewTest extends Activity
{
private WebView mWebView;
private EditText editText;
private Button go;
private Handler mHandler;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
// WebViewFragment fragment = (WebViewFragment)getFragmentManager().findFragmentById(R.id.fragment);/*android3.0 new feature*/
// mWebView = fragment.getWebView(); /*android3.0 new feature*/
mWebView = (WebView) findViewById(R.id.webView);
editText = (EditText) findViewById(R.id.editText);
go = (Button)findViewById(R.id.go);
mHandler = new Handler();
// WebView mWebView = new WebView(this);
//setContentView(mWebView);
getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(PluginState.ON);
// mWebView.getSettings().setPluginsEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setEnableSmoothTransition(true); /*android3.0 new feature*/
mWebView.getSettings().setLoadsImagesAutomatically(true);
// mWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
mWebView.setFocusableInTouchMode(true);
mWebView.setScrollbarFadingEnabled(false);
mWebView.setSaveEnabled(true);
WebView.enablePlatformNotifications();
registerForContextMenu(mWebView);

final Activity activity = this;

mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
/* WebViewTest.this.getWindow().setFeatureInt(
Window.FEATURE_PROGRESS, progress * 100);*/
activity.setTitle("Loading...");
editText.setText(mWebView.getUrl());
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
activity.setProgress(progress * 100);
if(progress == 100){
activity.setTitle("Loading Finish!");
}
}
});
mWebView.setWebViewClient(new WebViewClient() {

public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);
}
public void onPageFinished(WebView view, String url) {
/* mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:showAndroidToast('hello')");
}
});*/
super.onPageFinished(view, url);
}

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});
// Log.i("=============",""+ mWebView);
go.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(!editText.getText().toString().startsWith("http://") && !editText.getText().toString().startsWith("file:///")){
mWebView.loadUrl("http://"+editText.getText().toString());
mWebView.requestFocus();
}else{
mWebView.loadUrl(editText.getText().toString());
mWebView.requestFocus();
}
}
});
mWebView.loadUrl("file:///mnt/sdcard/v.html");
}
/* @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}*/
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
/* && event.getAction() == KeyEvent.ACTION_UP */
&& editText.isFocused()) {
/*if( editText.getText().subSequence(1, 4).toString().equal("http")){
mWebView.loadUrl(editText.getText().toString());
mWebView.requestFocus();
}*/
if(!editText.getText().toString().startsWith("http://") && !editText.getText().toString().startsWith("file:///")){
mWebView.loadUrl("http://"+editText.getText().toString());
mWebView.requestFocus();
}else{
// Log.i("=========3333333=======","http ???" + editText.getText().subSequence(1, 4).toString());
mWebView.loadUrl(editText.getText().toString());
mWebView.requestFocus();
}
return true;
}
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
mWebView.goBack();
mWebView.requestFocus();
return true;
}
if (event.getKeyCode() == KeyEvent.KEYCODE_ALT_RIGHT && mWebView.canGoForward()) {
mWebView.goForward();
mWebView.requestFocus();
return true;
}
return super.dispatchKeyEvent(event);
}
// public class JavaScriptInterface {
// Context mContext;
//
// /** Instantiate the interface and set the context */
// JavaScriptInterface(Context c) {
// mContext = c;
// }
//
// /** Show a toast from the web page */
// public void showToast(String toast) {
// Log.i("=======================================","say hello is clicked");
// Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
// }
// }
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.search:
// mWebView.showFindDialog("", true);/*android3.0 new feature*/
return true;
case R.id.save:
/* String savename = mWebView.getUrl().toString();
ValueCallback<String> callback = null;
mWebView.saveWebArchive("/mnt/sdcard/Download/"+savename,true,callback);
Log.i("~~~~~~~~~~~~~callback~~~~~~~~~~~~~~","" + callback);
mWebView.loadUrl("file:///mnt/sdcard/Download/"+savename);*/
Picture pic = mWebView.capturePicture();
int width = pic.getWidth();
int height = pic.getHeight();
if (width > 0 && height > 0) {
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
pic.draw(canvas);
try {
String fileName = "sdcard/ss/" + System.currentTimeMillis() + ".png";
File outfile = new File(fileName);
Log.i("==============Create File==============",""+outfile.exists());
if(!outfile.exists()){
outfile.createNewFile();
}
else {FileOutputStream fos = new FileOutputStream(fileName);
if (fos != null) {
bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
}
Toast.makeText(getApplicationContext(), "截图成功,文件名是:" + fileName, Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
default:
return super.onOptionsItemSelected(item);
}
/* return false;*/
}
@Override
protected void onDestroy() {
mWebView.destroy();
super.onDestroy();
}
}
...全文
3635 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
京东热奶茶 2013-09-03
  • 打赏
  • 举报
回复
楼主,有源码吗?
leisurelife1990 2013-07-17
  • 打赏
  • 举报
回复
或者在activity里加个硬件加速如: <activity android:name=".FlashListActivity" android:screenOrientation="landscape" android:hardwareAccelerated="true"></activity>
leisurelife1990 2013-07-17
  • 打赏
  • 举报
回复
在清单文件中加上这个android:targetSdkVersion="15"可能就行了 你试试
xun-ming 2013-07-16
  • 打赏
  • 举报
回复
唉,倒是能播放swf文件,但不是所有的都能播放,而且我想要有一个进度条来手动控制播放进度,这样是不是要用到js呢
go372900589 2013-03-05
  • 打赏
  • 举报
回复
现在也遇到flash文件播放不了的问题,请教大家如何播放优酷或者土豆上面的视频?
hotkarriver 2013-01-31
  • 打赏
  • 举报
回复
准备结贴!祝大家2013快乐!
manoel 2012-09-26
  • 打赏
  • 举报
回复
据说google把flash给砍掉了啊。。。只是据说。。。
hotkarriver 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 的回复:]

据说 android3.0 以后的系统不支付播放flash的.swf文件了! 很悲剧2.2以前的版本是可以播放的。
[/Quote]
啊?为什么呀。。。悲剧啊!!!
燃烧生命 2012-08-15
  • 打赏
  • 举报
回复
据说 android3.0 以后的系统不支付播放flash的.swf文件了! 很悲剧2.2以前的版本是可以播放的。
燃烧生命 2012-08-15
  • 打赏
  • 举报
回复
据说 android3.0 以后的系统不支付播放flash的.swf文件了! 很悲剧
suokui 2012-06-18
  • 打赏
  • 举报
回复
最近也碰到这个问题了~~~
sckalman 2012-05-23
  • 打赏
  • 举报
回复
楼主问题解决了么? 盼联系41485179 qq
pandu001 2012-04-24
  • 打赏
  • 举报
回复
系统的问题 我用2.2 2.3的都能播放 唯独用3.0以上的就不能播放,肯定是系统的问题............
ye7813629 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

我在几个论坛都问了,没人理。感觉在我们国家对android的研发还很肤浅,只做一些皮面上的功夫,深入的人很少,大家努力啊~~!
[/Quote]
一个月上一次论坛。。。。这个怎么说呢,除非很热心的,一般的程序员都是是写自己的博客,不会花时间逛论坛的,这方面我还真没做过,帮不了你不好意思。建议你到一些牛人的博客或者控件去留言好一些,项目忙的要死,时间本来很急,一般的博主看到知道的都会回复的。。。希望你能解决问题,吃饭了,回来继续加班。。。。。
boy89713 2012-04-12
  • 打赏
  • 举报
回复
播flash首先要在机子上装falsh播放器 。最近也在做webview 播放flash 我用2.2
over1400 2012-04-12
  • 打赏
  • 举报
回复
3.0以上,需要开启硬件加速,android:hardwareAccelerated="true"
avdxixi 2012-03-09
  • 打赏
  • 举报
回复
hai 解决了吗?我也遇到了这个问题,
hotkarriver 2011-12-18
  • 打赏
  • 举报
回复
http://allenshao.iteye.com/blog/1040935
hotkarriver 2011-12-15
  • 打赏
  • 举报
回复
最近在3.1机台上测试用的是一个可以点击发生变化的flash,发现可以听见flash播放的声音,如果滑动手指也能听见flash发生变化的声音,但是看不见flash动画。
有人知道怎么回事吗?
snowd 2011-12-07
  • 打赏
  • 举报
回复
对于本地的文件路径,要加上file:///的前缀来访问
最近我也在做这个,3.1的平板,10.3插件,也是有一些问题,放不出来。
在webView上调用object控件的方法无效。

打算参考10楼的方法直接把flash写在网页里写死,再试试。
加载更多回复(21)

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧