打开本地flash webview open swf
生活随笔
收集整理的這篇文章主要介紹了
打开本地flash webview open swf
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
想打開flash文件,必須裝有flash插件。android手機上裝Adobe Flash Player .APK才能打開顯示flash。
可以單獨成為android工程,也可以打包成jar,放到unity調(diào)用。
單獨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;@Overrideprotected 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(){@Overridepublic void onProgressChanged(WebView view, int newProgress) {// TODO Auto-generated method stubsuper.onProgressChanged(view, newProgress);System.out.println("newProgress:"+String.valueOf(newProgress));if(newProgress==100){new Handler().postDelayed(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubmProgressDialog.dismiss();}}, 500);}}});if(checkinstallornotadobeflashapk()){Log.i("mainactivity","OPENSWF"+mFlashFilePath);mWebView.loadUrl(mFlashFilePath);}else{installadobeapk();}}@Overridepublic 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;}//退出時關(guān)閉flash播放@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();mWebView.destroy();this.finish();System.gc();}//按下Back按鍵時關(guān)閉flash播放@Overridepublic void onBackPressed() {// TODO Auto-generated method stubmWebView.destroy();this.finish();System.gc();super.onBackPressed();}//后臺運行@Overrideprotected void onUserLeaveHint() {// TODO Auto-generated method stubmWebView.destroy();this.finish();System.gc();super.onUserLeaveHint();}//檢查機子是否安裝的有Adobe Flash相關(guān)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中,就要寫以下內(nèi)容。把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" ><WebViewandroid:id="@+id/webview" android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true" /> </RelativeLayout>
總結(jié)
以上是生活随笔為你收集整理的打开本地flash webview open swf的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据改版 | CnOpenData中国上
- 下一篇: 计组—运算器实验报告1最全分析总结