日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

打开本地flash webview open swf

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打开本地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);} }


在unity中寫代碼

<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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。