我有一个应用程序打开一个pdf文件,当我们点击按钮。它在Android的所有版本上都是正常的,但在Android7.1.1上崩溃了,我不知道为什么:/
这些是我看过的相关问题
private void readPDF({
File f = new File(getFilesDir(), "toto.pdf");
if (!f.exists()) {
AssetManager assets=getResources().getAssets();
try {
copy(assets.open("toto.pdf"), f);
}
catch (IOException e) {
Log.e("FileProvider", "Exception copying from assets", e);
}
}
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", f);
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
revokeUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
}
private void copy(InputStream in, File dst) throws IOException {
FileOutputStream out=new FileOutputStream(dst);
byte[] buf=new byte[1024];
int len;
while ((len=in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
我的清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.fr">
<application
android:allowBackup="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.fr.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
<activity
android:name="com.example.fr.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
最后是错误代码:
04-26 08:15:16.991 217 48-21748/com.example.fr E/AndroidRuntime:致命异常:主进程:com.example.fr,pid:21748 Android.content.action.view dat=content://com.example.fr.fileprovider/assets/toto.pdf typ=application/pdf flg=0x1}在Android.app.instrumentation.checkstartactivityresult(instrumentation.java:1809)在ctivity.java:4490)在com.example.fr.mainactivity.readpdf(mainactivity.java:58)在com.example.fr.mainactivity.access$000(mainactivity.java:21)在com.example.fr.mainactivity.access$1。onclick(mainactivity.java:34)在android.view.view.performclick(view.java:5637)在android.view.view$performclick.run(view.java:5629)在
谢谢你的帮助
问题是,您强制系统打开意图,而不检查是否有应用程序可以处理意图。可能您正在尝试打开一个设备上的PDF,而该设备没有用于读取PDF文件的应用程序。请尝试使用以下代码:
PackageManager packageManager = getActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent);
} else {
Log.d(TAG, "No Intent available to handle action");
}
Animal.java 我为它创建了以下自定义断言: AnimalAssert.java 编辑:基于第一个答案(cglib需要一个),我用一个no arg构造函数更新了动物类,但是抛出了相同的异常
我的应用程序一直在许多Android平台上报告这个问题(4.1、4.0.4、2.3.6.…)。但我无法在我的手机上复制这个问题。我已经在Google上搜索了这个问题,但堆栈跟踪似乎与我的不一样。
我有一台带有Intel CPU的Windows机器(在引导菜单上启用VMX)。我使用VirtualBox在上面运行Ubuntu Guest。我在上面运行qemu,以运行另一个Guest OS,使用kvm(选项)。 我在尝试插入kvm-intel模块时收到以下错误: 我已经检查了来宾操作系统中的vpx标志,但我也没有看到 有没有办法在来宾Ubuntu操作系统中启用kvm支持,以便我可以在Ubuntu
我试图从java程序中使用Spark SQL,其中pom.xml中的依赖关系指向Spark版本1.6.0。下面是程序 但是,我在线程“main”java.lang.nosuchmethoderror:org.apache.spark.sql.sqlcontext.sql(ljava/lang/string;)lorg/apache/spark/sql/dataframe中出现异常;我正在创建一个平
主机系统为ARCHLinux。我想开发需要运行Windows docker容器的.NET4.6.1应用程序。所以我在VirtualBox下运行Win10。然后我在Win10中安装Docker,以运行Windows Docker容器。Linux->VirtualBox->Win10->Docker->Windows Docker容器->要运行的应用程序。 或者更具体地说,VirtualBox是否支持
问题内容: 我正在尝试根据此教程在我的应用程序中实现NotificationListenerService:http : //www.kpbird.com/2013/07/android- notificationlistenerservice.html ,但是调用getActiveNotifications时出现NullPointerException。 我正在向该服务发送广播,该广播应生成所有