java - 在 WebView 中显示 .swf 文件

标签 java android swfobject

有人可以帮我将 .swf 文件显示到 WebView 中吗?我尝试这样做,但它显示的是白色窗口而不是 WebView。我还尝试显示一个简单的网站,它还显示一个空窗口。

Fragment.java

package com.app.clupascu.oavm;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class FirstFragment extends Fragment {


    @SuppressLint("SetJavaScriptEnabled")
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_first, container, false);

        String url ="file:///android_asset/map.swf";
        WebView mWebView=(WebView) v.findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
        mWebView.loadUrl(url);

        return inflater.inflate(R.layout.fragment_first, container, false);

    }
}

这里我尝试将 .swf 文件加载到 WebView 中。 我认为问题出在这个文件中,我尝试加载一个简单的网站,但也没有结果。

Fragment.xml

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

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />

</RelativeLayout>

MainPage.java

package com.app.clupascu.oavm;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;

public class MainPage extends AppCompatActivity {


    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    setTitle("Map");
                    FirstFragment fragment = new FirstFragment();
                    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fram, fragment);
                    fragmentTransaction.commit();
                    return true;
                case R.id.navigation_dashboard:
                    setTitle("History");
                    SecondFragment fragment2 = new SecondFragment();
                    FragmentTransaction fragmentTransaction2 = getSupportFragmentManager().beginTransaction();
                    fragmentTransaction2.replace(R.id.fram, fragment2);
                    fragmentTransaction2.commit();
                    return true;
                case R.id.navigation_notifications:
                    setTitle("Schedule");
                    ThirdFragment fragment3 = new ThirdFragment();
                    FragmentTransaction fragmentTransaction3 = getSupportFragmentManager().beginTransaction();
                    fragmentTransaction3.replace(R.id.fram, fragment3);
                    fragmentTransaction3.commit();
                    return true;
            }
            return false;
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_page);

        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

        setTitle("Map");
        FirstFragment fragment = new FirstFragment();
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.fram, fragment);
        fragmentTransaction.commit();
    }

}

谢谢!

最佳答案

SWF 是 ShockWaveFlash 文件。如果没有 Flash 插件的帮助,Web 浏览器无法运行/显示 ShockWave Flash 文件。

Android 版 Flash 插件几年前已停产。因此,您将无法成功使其在 WebView 中运行。

因此,您必须重新考虑您的应用程序设计以及如何在没有该 SWF 文件的情况下实现您想要的效果。

无论如何,使用将达到 end of life in 2 years (end of 2020) 的技术来启动新应用程序并不是一个好主意。 .

关于java - 在 WebView 中显示 .swf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52934409/

相关文章:

java - 我怎样才能保持相同的值(value)?

java - 是否可以使用 aspectj 捕获所有异常?

java - 在 Playframework 中关闭 WSClient 时出现问题

Android - 对话框中的微调器不会填充

javascript - 在 IE 中使用 Javascript 获取 Flash 电影

javascript - 在 IOS 设备上暂停 (html5) youtube 视频

java - GWT UiBinder - 将新对象分配给 UiField 引用

android - 将 Spring 依赖注入(inject)代码移至 Android

android - 共享首选项未更新

javascript - swfobject 播放/暂停/停止