打开本地flash webview open swf
发布时间:2020-12-15 07:04:35 所属栏目:百科 来源:网络整理
导读:想打开flash文件,必须装有flash插件。android手机上装Adobe Flash Player .APK才能打开显示flash。 可以单独成为android工程,也可以打包成jar,放到unity调用。 单独android工程需把swf文件放到assets文件夹里 MainActivity.class package com.example.ope
想打开flash文件,必须装有flash插件。android手机上装Adobe Flash Player .APK才能打开显示flash。 可以单独成为android工程,也可以打包成jar,放到unity调用。 单独android工程需把swf文件放到assets文件夹里 MainActivity.class
package com.example.openswf_jar; import java.util.List; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.annotation.SuppressLint; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Color; import android.util.Log; import android.view.Menu; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebSettings.PluginState; import android.webkit.WebView; public class MainActivity extends Activity { private WebView mWebView; private Handler mHandler=new Handler(); private String mFlashFilePath; private ProgressDialog mProgressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView=(WebView)findViewById(R.id.webview); setTitle("flash播放器"); setTitleColor(Color.RED); WebSettings setting=mWebView.getSettings(); setting.setPluginState(PluginState.ON); setting.setJavaScriptEnabled(true); Intent intent = getIntent(); mFlashFilePath = intent.getStringExtra("url"); if(mFlashFilePath == null) mFlashFilePath = "file:///android_asset/flash.swf"; try { Thread.sleep(500);// 主线程暂停下,否则容易白屏,原因未知 } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } mProgressDialog=ProgressDialog.show(this,"请稍等...","加载flash中...",true); mWebView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view,int newProgress) { // TODO Auto-generated method stub super.onProgressChanged(view,newProgress); System.out.println("newProgress:"+String.valueOf(newProgress)); if(newProgress==100){ new Handler().postDelayed(new Runnable() { @Override public void run() { // TODO Auto-generated method stub mProgressDialog.dismiss(); } },500); } } }); if(checkinstallornotadobeflashapk()){ Log.i("mainactivity","OPENSWF"+mFlashFilePath); mWebView.loadUrl(mFlashFilePath); }else{ installadobeapk(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main,menu); return true; } //退出时关闭flash播放 @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); mWebView.destroy(); this.finish(); System.gc(); } //按下Back按键时关闭flash播放 @Override public void onBackPressed() { // TODO Auto-generated method stub mWebView.destroy(); this.finish(); System.gc(); super.onBackPressed(); } //后台运行 @Override protected void onUserLeaveHint() { // TODO Auto-generated method stub mWebView.destroy(); this.finish(); System.gc(); super.onUserLeaveHint(); } //检查机子是否安装的有Adobe Flash相关APK private boolean checkinstallornotadobeflashapk() { PackageManager pm = getPackageManager(); List<PackageInfo> infoList = pm .getInstalledPackages(PackageManager.GET_SERVICES); for (PackageInfo info : infoList) { if ("com.adobe.flashplayer".equals(info.packageName)) { return true; } } return false; } //安装Adobe Flash APK @SuppressLint("JavascriptInterface") private void installadobeapk() { mWebView.addJavascriptInterface(new AndroidBridge(),"android"); mWebView.loadUrl("http://app.mi.com/detail/188"); } private class AndroidBridge { public void goMarket() { mHandler.post(new Runnable() { public void run() { Intent installIntent = new Intent( "android.intent.action.VIEW"); installIntent.setData(Uri.parse("market://details?id=com.adobe.flashplayer")); startActivity(installIntent); } }); } } } 想加入到unity中,就要写以下内容。把swf文件放到StreamingAssets文件夹里。 UnityCall.class
package com.example.openswf_jar; import android.content.Context; import android.content.Intent; public class UnityCall { public void U3DCallOpenSWF(Context unityActivity,String url) { Intent intent = new Intent(unityActivity,MainActivity.class); intent.putExtra("url",url); unityActivity.startActivity(intent); } }
<span style="white-space:pre"> </span>private AndroidJavaObject javaObj = null; private AndroidJavaObject GetJavaObject() { if (javaObj == null) { javaObj = new AndroidJavaObject("com.example.openswf_jar.UnityCall"); } return javaObj; } void OpenSWF() { AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); GetJavaObject().Call("U3DCallOpenSWF",jo,"file:///android_asset/flash.swf"); } activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerInParent="true" /> </RelativeLayout> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |