Как открыть файл PPT / Presentation в веб-представлении в Android? - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть URL презентации, и я хочу показать это в веб-просмотре в Android. Я пробовал приведенный ниже код, но он перенаправляет в приложении Google Drive.

String url1 = «https://docs.google.com/presentation/d/1nL5yO1HX_";

И мой код веб-просмотра ниже:

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 ]

1 голос
/ 02 мая 2019

Используйте 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" />
0 голосов
/ 30 апреля 2019

Я использовал веб-клиент, и он работал для меня

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;

        }
    }
...