Articles of android 7.0 nougat

Android 7.0+上的WebView无法呈现页面

我有带许可证的WebView屏幕。 一切都运行良好,直到用户通知我在Android 7+设备上没有显示任何内容。 public class DefaultWebActivity extends AppCompatActivity { WebView mWebView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.default_web); mWebView = (WebView) findViewById(R.id.web_view); mWebView.setWebChromeClient(new WebChromeClient()); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.w(“WebActivity”, “Error loading page ” + description); } @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest […]

FCM推送高优先级主题带来延迟

我将推送消息发送到订阅一个主题的小组设备(少于5个),优先级参数设置为高 高度优先。 FCM尝试立即提供高优先级消息,允许FCM服务在可能的情况下唤醒hibernate设备并打开与应用服务器的网络连接。 例如,具有即时消息,聊天或语音呼叫警报的应用程序通常需要打开网络连接并确保FCM毫不拖延地将消息传递给设备。 仅当消息对时间至关重要并且需要用户立即进行交互时才设置高优先级,但要注意,将消息设置为高优先级会导致电池消耗比普通优先级消息更多。 但是当我将设备置于IDLE状态时,它会带来很大的延迟。 在Nougat 7.1延迟超过10分钟。 这种types的推动需要不到10秒的延迟。 将time_to_live设置为0仅在Marshmallow上解决问题。 牛轧糖仍然失败。 所以,我只看到3个可能的问题原因 发送到主题的消息不能是高优先级。 但是向每个设备发送独立消息会增加应用服务器负载。 我需要从Firebase数据库加载新的令牌,因此结果将是 – 对5个用户而不是1个用户的10个http请求。 应用必须在白名单中。 但是根据文档 ,如果我使用FCM,这是不可接受的。 我不想要它,因为它会导致电池耗尽。 错误? https://github.com/firebase/quickstart-android/issues/100 如果真正的原因是第一个,那么为什么它没有在文档中描述?

如何检测它是否为“最近”按钮,多窗口模式或主页按钮onUserLeaveHint()

在我的应用程序中,当用户按下主页按钮时,我依赖于onUserLeaveHint()方法,但是当您在Android 7.0中通过长按“最近按钮”(我不这样做)启动多窗口模式时也会调用此方法我希望执行与按下主页按钮时相同的操作)。 所以我想知道是否有办法检测哪个是哪个。 干杯! 注意: 在 onUserLeaveHint() 之后调用onUserLeaveHint()

意图安装APK文件 – Android Nougat

我广泛搜索并没有发现问题。 当您尝试使用Android Nougat的Intent安装APK file ,它只是不安装并显示以下警告:“解析包时出现问题”。 它可以完美地打开PDF文件,例如,使用设置打开这种types的文件( PDF )。 但要安装。 apk文件不起作用。 LogCat没有显示任何错误,我无法达成任何解决方案。 可能有什么不对? 以下代码: 清单 : XML /文件路径: 活动: if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { try { Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); File file = new File(getContext().getFilesDir(), “app-debug.apk”); Uri uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID + “.fileprovider”, file); intent.setDataAndType(uri, “application/vnd.android.package-archive”); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(intent); finish(); } catch (Exception e) { e.printStackTrace(); } […]

Nougat版本的快捷方式

当我尝试在Intent包中传递Serializable时,我正在捕获这个致命的exception,我认为这与我正在尝试实现的nougat快捷方式有关。 这里例外: 12-16 16:17:32.972 20461-20461/***.****.******.debug E/AndroidRuntime: FATAL EXCEPTION: main Process: ***.****.******.debug, PID: 20461 java.lang.IllegalArgumentException: Bad value in PersistableBundle key=shortcutId value=***.****.******.common.cta.CtaAccountSectionModel@1fb70dc at android.os.PersistableBundle.(PersistableBundle.java:124) at android.os.PersistableBundle.(PersistableBundle.java:98) at android.content.pm.ShortcutInfo.fixUpIntentExtras(ShortcutInfo.java:267) at android.content.pm.ShortcutInfo.(ShortcutInfo.java:245) at android.content.pm.ShortcutInfo.(ShortcutInfo.java) at android.content.pm.ShortcutInfo$Builder.build(ShortcutInfo.java:1027) at ****.******.***.ShortcutHelper.createShortcut(ShortcutHelper.java:79) at ****.******.***.ShortcutHelper.refreshShortcuts(ShortcutHelper.java:87) at ****.******.***.****.******.***.refreshShortcuts(Application.java:93) at ****.******.***.refreshShortcuts(SettingActivity.java:247) at ****.******.***.storeShortcuts(SettingActivity.java:242) at c****.******.***.access$800(SettingActivity.java:56) at ****.******.***.SettingActivity$2.onClick(SettingActivity.java:233) at android.view.View.performClick(View.java:5637) at android.view.View$PerformClick.run(View.java:22429) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at […]

view.getLayoutParams()。宽度不适用于nougat

我编写了代码来动态设置视图的高度和宽度 view.getLayoutParams().width = 120; view.getLayoutParams().height = 120; 它与下面的牛轧糖设备完美配合,但是用牛轧糖它不起作用。 它只是将高度和宽度设为0.牛轧糖更新后的任何变化? 更新: 但是它有效 1)当我在设置高度和宽度后使用view.requestLayout() 2) view.setLayoutParams(new LinearLayout.LayoutParams(200, 120)); 那么为什么它在没有使用这两个选项的情况下使用pre nougat设备呢?

使用Android Nougat在图库中打开图像

我想在Android Nougat上的库中打开已保存的图像,但我得到的是一个黑色的图库页面,上面写着“无法加载照片”的信息。 那是我的代码: 表现 provider_paths.xml DrawView中生成的路径 public static boolean save(Bitmap bitmap){ Date now = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“dd-MM-yyyy’_’HH:mm”); File folder = new File(Environment.getExternalStorageDirectory() + File.separator + “Crash”); if (!folder.exists()) { folder.mkdirs(); } FileOutputStream fos = null; try { lastImagePath = new File(Environment.getExternalStorageDirectory().toString() + “/Crash/” + simpleDateFormat.format(now) + “.jpg”); fos = new FileOutputStream(lastImagePath); […]

处理android 7 Nougat上的网络更改

有没有办法在Android N上处理wi-fi或蜂窝网络启用/禁用。我试图添加带有intent-filter “android.net.conn.CONNECTIVITY_CHANGE”广播接收器,但它已被弃用N和更高版本。

WebView崩溃加载Android 7.0的video

我几天来一直在研究这个问题,但却无法解决这个问题。 我在使用WebViews时遇到的问题是,当我加载vimeovideo时,它会因以下错误而失败: java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.graphics.Bitmap.getWidth()’ on a null object reference at com.android.webview.chromium.WebViewContentsClientAdapter.getDefaultVideoPoster(WebViewContentsClientAdapter.java:1181) at org.chromium.android_webview.DefaultVideoPosterRequestHandler$1.run(DefaultVideoPosterRequestHandler.java:39) 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:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 现在奇怪的是,这种情况发生在Anroid 7.0上并没有比Android 4.4更低(没有用于5.0或6.0的物理设备进行测试)。 这是我正在运行以呈现片段的代码: public class FragmentWebView extends Fragment{ protected WebView myWebView; private String title, url, message; private boolean isOffline; View […]

在Android 7.0上并不总是调用SurfaceTexture方法

我的代码中有一个TextureView ,我已经设置了SurfaceTextureListener 。 在Android 6.0上,每当我离开活动并在Android 7.0上返回(分别)时,都会调用onSurfaceTextureDestroyed和onSurfaceTextureAvailable上的方法。我注意到onSurfaceTextureAvailable仅在创建活动后调用一次。 每当我离开活动并返回时,表面都不会被破坏和重新创建,就像我以前从Android 6.0那样。 经过一些调查后,我注意到API 18,19,24表现一种方式,API 20-23表现为另一种方式。 知道为什么,主要是如何使它在所有Android版本上表现相同?