如何在Android的WebView中打开PPT /演示文稿文件?

时间:2019-04-30 12:36:40

标签: android ms-office powerpoint

我有一个演示文稿的URL,我想在android的webview中显示它。我尝试了下面的代码,但它在Google Drive应用程序中重定向。

  

字符串url1 =   “ https://docs.google.com/presentation/d/1nL5yO1HX_”;

我的Webiew代码如下:

WebView mywebview = findViewById(R.id.webview);

WebSettings settings = mywebview.getSettings();
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setBuiltInZoomControls(true);
settings.setAllowFileAccess(true);
settings.setJavaScriptEnabled(true);

mywebview.loadUrl(url1);

2 个答案:

答案 0 :(得分:1)

使用setWebViewClient和getHitTestResult。用于获取将要打开的url,然后检查其是否为ppt文件。

第一个XML文件:-

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"></WebView>

主要活动:-

        webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String request)
        {
            try{
            if(webView.getHitTestResult().getExtra().endsWith(".pptx"))
            {
                try
                {
                    Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                    intent.putExtra("url",webView.getHitTestResult().getExtra());
                    startActivity(intent);
                    return true;
                }
                catch (Exception e)
                {
                    Toast.makeText(MainActivity.this, e+"", Toast.LENGTH_SHORT).show();
                }
                return true;
            }
            else
            {
                webView.loadUrl(request);
                return true;
            }}
            catch (Exception e)
            {
                return false;
            }
        }

然后在新活动中获得意图的价值:-

public class Main2Activity extends AppCompatActivity {

WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    Intent intent=getIntent();
    String t=intent.getStringExtra("url");
    String s="http://docs.google.com/viewer?url=";
    s=s.concat(t);
    webView=(WebView)findViewById(R.id.webView);
    webView.loadUrl(s);
}
@Override
protected void onResume()
{
    this.finish();
    super.onResume();
}

第二个XML文件:-

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

答案 1 :(得分:0)

我使用过webclient,它对我有用

public class WebClient extends WebViewClient{
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }
    }