目前正在处理多种类型的文件并允许它们在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());
}
}
答案 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
下载文件