【发布时间】:2018-04-09 17:43:59
【问题描述】:
当我尝试从网络打开 .docx 或 .doc 或 .txt 文件时出现以下错误,但我没有看到此异常,如果文件类型为 .pdf 或 .jpg,我可以打开文件
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://10.0.2.2:8081/... typ=application/msword flg=0x14000000 (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1809)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523)
at android.app.Activity.startActivityForResult(Activity.java:4224)
at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:68)
at android.app.Activity.startActivityForResult(Activity.java:4183)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:751)
at android.app.Activity.startActivity(Activity.java:4507)
at android.app.Activity.startActivity(Activity.java:4475)
at com.example.test.OpenFileTask.openDoc1(OpenFileTask.java:89)
at com.example.test.OpenFileTask.doInBackground(OpenFileTask.java:24)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
下面是网址 http://10.0.2.2:8081/test/download/Test.doc?ticket=255c000161_word_l5906nc7ggozg.doc
如果我在浏览器中使用上述网址,浏览器会下载文件
下面是我在 MainActivity.java 中使用的代码
Uri path = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW);
String mimeType = getMimeType(url);
intent.setDataAndType(path, mimeType);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
manifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/test_app_icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data android:name="android.webkit.WebView.MetricsOptOut"
android:value="true" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我无法理解上述代码如何适用于 .pdf/.jpg 文件,而不适用于 .doc 或 .docx 或 .txt 文件。我还没有测试过 ppt 和 xlsx 文件
我的设备上同时安装了 google docs 和 OfficeSuite 应用。
我是 android 开发新手,非常感谢任何帮助
【问题讨论】:
-
我正在使用 android webview,我还没有发布活动 xml。真的需要发到这里吗?它有简单的 WebView 元素。不使用 WebView 如何在 Android 应用中加载网页。
-
如果您在问题中使用标签,我期望在您的问题中引用它,否则标签会产生误导。你不需要做任何事情,它只是帮助其他人理解你的问题,如果你分享你可以分享的东西,更广泛的受众会让你获得更多的曝光率和更平衡的答案。人们使用标签来搜索他们可能有意见的问题。