当我尝试打开文件时,应用程序崩溃了.它可以在Android Nougat下运行,但在Android Nougat上它会崩溃.当我尝试从SD卡打开文件而不是从系统分区打开文件时,它只会崩溃.一些许可问题?
示例代码:
File file = new File("/storage/emulated/0/test.txt");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "text/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); // Crashes on this line
Run Code Online (Sandbox Code Playgroud)
日志:
android.os.FileUriExposedException:file:///storage/emulated/0/test.txt通过Intent.getData()暴露在app之外
编辑:
在定位Android Nougat时,file://不再允许使用URI.我们应该使用content://URI代替.但是,我的应用程序需要打开根目录中的文件.有任何想法吗?
我Html.fromHtml用来查看html TextView.
Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);
Run Code Online (Sandbox Code Playgroud)
但Html.fromHtml现在已经在Android N +中弃用了
我/我如何找到新的方法?
我的XML布局没有使用此错误消息进行渲染.我已经在使用Java 8了.
还使用Gradle中的最新构建工具.
android {
compileSdkVersion 'android-N'
buildToolsVersion 24.0.0 rc1
...
}
Run Code Online (Sandbox Code Playgroud)
XML错误 -
我看到这个本机崩溃与以下堆栈跟踪.
这仅在Android 7.0和7.1中发生.该应用程序没有添加任何新内容,该应用程序已投入生产几年,但随着更多设备更新到Nougat,此崩溃现在经常发生并且正在变得令人讨厌.
任何意见,将不胜感激.
native: pc 000000000007a6c4 /system/lib64/libc.so (tgkill+8)
native: pc 0000000000077920 /system/lib64/libc.so (pthread_kill+64)
native: pc 000000000002538c /system/lib64/libc.so (raise+24)
native: pc 000000000001d24c /system/lib64/libc.so (abort+52)
native: pc 000000000001225c /system/lib64/libcutils.so (__android_log_assert+224)
native: pc 00000000000610e0 /system/lib64/libhwui.so
native: pc 000000000003908c /system/lib64/libhwui.so
native: pc 000000000003609c /system/lib64/libhwui.so
native: pc 000000000003b4fc /system/lib64/libhwui.so
native: pc 000000000003c520 /system/lib64/libhwui.so
native: pc 000000000003e694 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+152)
native: pc 00000000000127f0 /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+336)
native: pc 00000000000a50b0 /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+116)
native: pc 00000000000770f4 /system/lib64/libc.so (_ZL15__pthread_startPv+204)
native: pc 000000000001e7d0 /system/lib64/libc.so (__start_thread+16)
Run Code Online (Sandbox Code Playgroud)
更新7月18日:
仍然无法找到这个的根,所以我决定购买一个出现次数最多且价格合理的设备,结果是三星Galaxy J3 2017版本与Android 7.0.但不幸的是仍然无法重现崩溃. …
Android 7引入了对证书处理方式的一些更改(http://android-developers.blogspot.com/2016/07/changes-to-trusted-certificate.html),不知怎的,我不能让我的Charles代理工作了.
我的network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)
我正在调试模式下运行.但不管怎样,我明白了javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found..
不用说,我确实安装了pfx证书Settings -> Security -> Install from storage.证书显示在User Credentials但不在Trusted credentials -> User.在我的棒棒糖设备上,证书列在那里.
我正在使用okhttp3作为HTTP库.
知道我做错了什么吗?
我正在试图弄清楚工具栏的展开/折叠动画是如何完成的.如果您查看Telegram应用程序设置,您将看到列表视图和工具栏.向下滚动时,工具栏会折叠,向上滚动时会展开.还有配置文件pic和FAB的动画.有人有任何线索吗?你认为他们建立了所有的动画吗?也许我错过了新API或支持库中的一些东西.
我注意到Google日历应用程序中的相同行为,当您打开Spinner时(我不认为它是一个微调器,但它看起来像):工具栏展开,当您向上滚动时,它会崩溃.
只是为了澄清:我不需要QuickReturn方法.我知道可能Telegram应用程序正在使用类似的东西.我需要的确切方法是Google日历应用效果.我试过了
android:animateLayoutChanges="true"
Run Code Online (Sandbox Code Playgroud)
并且expand方法运行良好.但显然,如果我向上滚动ListView,工具栏不会崩溃.
我也想过添加一个,GestureListener但我想知道是否有任何API或更简单的方法来实现这一点.
如果没有,我想我会跟着GestureListener.希望能有一个平滑的动画效果.
谢谢!
android android-animation android-toolbar android-6.0-marshmallow android-7.0-nougat
我将Nexus 5X更新为Android N,现在当我在其上安装应用程序(调试或发布)时,我在每个具有附加功能的Bundle的屏幕转换上都会收到TransactionTooLargeException.该应用正在处理所有其他设备.PlayStore上的旧应用程序和大多数相同的代码正在使用Nexus 5X.有人有同样的问题吗?
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 592196 bytes
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3752)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: android.os.TransactionTooLargeException: data parcel size 592196 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:615)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3606)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3744)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Run Code Online (Sandbox Code Playgroud) 我有一个已发布的应用程序,当新引入的Display size操作系统设置设置为太大值时,在Android N上启动时崩溃.
当我查看logcat时,我看到以下消息:
java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.
Run Code Online (Sandbox Code Playgroud)
我在第一个Activity中将问题跟踪到ImageView,它显示了一个漂亮的大背景图像.有问题的图像是2048x1066,位于我的通用drawables目录中,因此无论密度如何,都将使用此图像.
当Display size设置为时,一切正常Small.但是当我上去时Default,它就会停止工作.如果我然后用较小的图像交换图像,它可以工作Default,但如果我去Large,它会再次停止工作.
我的猜测是,调整Display size会使您的设备表现得像具有更高像素密度的物理上更小的设备.但我不明白我应该在这做什么.如果我逐渐增加较小的图像以逐渐提高分辨率,那么在实际大型显示器上看起来不会很好.或者我不明白什么?
任何指针都将非常感激.
我的应用程序有一个自动更新功能,下载APK,下载完成后,Intent.VIEW_ACTION打开应用程序,让用户安装下载的apk
Uri uri = Uri.parse("file://" + destination);
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
install.setDataAndType(uri,
manager.getMimeTypeForDownloadedFile(downloadId));
activity.startActivity(install);
Run Code Online (Sandbox Code Playgroud)
这适用于所有设备<24
现在使用Android 24显然我们不再允许使用file:///启动意图并且在一些谷歌搜索之后建议使用A文件提供程序
新代码:
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
install.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri apkUri = FileProvider.getUriForFile(AutoUpdate.this,
BuildConfig.APPLICATION_ID + ".provider", file);
install.setDataAndType(apkUri,
manager.getMimeTypeForDownloadedFile(downloadId));
activity.startActivity(install);
Run Code Online (Sandbox Code Playgroud)
现在activity.startActivity(安装); 抛出错误
找不到处理Intent的活动{act = android.intent.action.VIEW dat = content://com.xxxx.xx.provider/MyFolder/Download/MyApkFile.apk typ = application/vnd.android.package-archive flg = 0x4000000}
有什么方法可以在Android 7(24)中打开APK查看器吗?
android android-intent android-fileprovider viewaction android-7.0-nougat
我的应用程序在运行版本的设备上发生崩溃7.0,7.1.1并8.0.0使用以下堆栈跟踪:
Fatal Exception: java.lang.RuntimeException: Unable to resume activity {xxx/xxx.views.activities.HomeActivity}: java.lang.IllegalArgumentException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3788)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3828)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2991)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by java.lang.IllegalArgumentException
at android.os.Parcel.readException(Parcel.java:1697)
at android.os.Parcel.readException(Parcel.java:1646)
at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:6600)
at android.app.Activity.isTopOfTask(Activity.java:6142)
at android.app.Activity.onResume(Activity.java:1331)
at android.support.v4.app.FragmentActivity.onResume(FragmentActivity.java:485)
at xxx.views.activities.BaseActivity.onResume(BaseActivity.java:50)
at xxx.views.activities.HomeActivity.onResume(HomeActivity.java:364)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1277)
at android.app.Activity.performResume(Activity.java:7058)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3765)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3828)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2991)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Method.java)
at …Run Code Online (Sandbox Code Playgroud) android android-activity android-7.0-nougat android-8.0-oreo