无法在默认应用android中从office文件服务器(xlxs,doc,txt)打开Url

时间:2017-12-29 04:46:28

标签: java android android-studio android-fileprovider

目前正在处理多种类型的文件并允许它们在Android手机中使用默认应用程序打开。 到目前为止,我能够打开所有其他文件,如:pdf,图像,音频与手机中安装的默认应用程序。 但是当谈到办公室文件,如xlxs,doc。 已安装OFFICE SUITE但我无法打开它们。

使用默认应用打开代码:

# Accept packets from specific host (x.x.x.x).
iptables -A INPUT -s x.x.x.x -j ACCEPT

用于查找文件类型的代码

@Override
public void onSelectedItem(String image_urls_, int position) {
String mimeType = getMimeType(image_urls_);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(image_urls_), mimeType);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.e("memtype", mimeType);
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(Attachments.this, "No handler for this type of file.", Toast.LENGTH_LONG).show();
Log.e("bug_file", e.toString());
 }
} 

1 个答案:

答案 0 :(得分:0)

我使用WebView和ImageView在应用程序内部显示文档。

xml:

<RelativeLayout
    android:id="@+id/rl_image"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/iv_image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/attachment"/>

    <ProgressBar
        android:layout_width="60dip"
        android:layout_height="60dip"
        android:id="@+id/progress_bar"
        android:layout_centerInParent="true" />

</RelativeLayout>

<强>活动:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.attachement_detail_activity);

        webView = (WebView) findViewById(R.id.web_view);
        View rlImage = findViewById(R.id.rl_image);
        ImageView imageView = (ImageView) findViewById(R.id.iv_image_view);

        fileUrl = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
        courseName = getIntent().getStringExtra(Constants.BUNDLE_COURSE_TITLE);
        courseId = getIntent().getIntExtra(Constants.BUNDLE_COURSE_ID, 0);
        if(fileUrl.contains(".jpg") || fileUrl.contains(".jpeg") || fileUrl.contains(".png")) {
            AQuery aQuery = new AQuery(this);
            aQuery.id(imageView).progress(R.id.progress_bar).image(fileUrl, false, true, Helper.getDisplayWidth(this), 0);
            rlImage.setVisibility(View.VISIBLE);
            webView.setVisibility(View.GONE);
        } else {
            rlImage.setVisibility(View.GONE);
            showDoc(fileUrl);
            webView.setVisibility(View.VISIBLE);
        }
    }

    private void showDoc(final String fileUrl){
        if (Helper.isConnected(this)) {
            final Dialog progressDialog = new Dialog(this);
            if (progressDialog.getWindow() != null) {
                progressDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
            }
            progressDialog.setContentView(R.layout.custom_progress_layout);
            progressDialog.setCancelable(false);
            progressDialog.setTitle(this.getString(R.string.app_name));

            if (progressDialog.getWindow() != null) {
                progressDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                progressDialog.getWindow().setGravity(Gravity.CENTER_HORIZONTAL);
            }
            webView.getSettings().setJavaScriptEnabled(true);
            webView.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    super.onPageStarted(view, url, favicon);
                    progressDialog.show();
                }

                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    progressDialog.dismiss();
                }
            });
//            String pdf = "http://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
            webView.loadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + fileUrl);
        }
    }

在这里,我使用Android查询库来显示来自网址library

的图片

如果您想在查看此文件后使用下载,您可以提供下载选项供用户下载。使用下载管理器从网址how to use download manager

下载文件