Articles of android n

Android N Java8 java.time

我更新到最新的Android N sdk。 我唯一不理解的是为什么我不能将java.time导入到我的代码中? 我认为Java8可以通过Android N获得。那么为什么Google没有添加java.time包呢?

我们如何在Android N开发者预览版中尝试Freeform多窗口模式?

N Developer Preview文档引用了一个自由forms的多窗口模式选项: 大型设备的制造商可以选择启用自由forms模式,用户可以在其中自由调整每个活动的大小。 如果制造商启用此function,除了分屏模式外,设备还提供自由forms模式。 文档还建议您应该在自由forms的多窗口模式下测试您的应用程序。 但是,我在Nxus 6和Nexus 9上加载N Developer Preview图像的两个设备使用分屏方法来支持多窗口。 有没有办法让自由forms模式继续下去? 另一个设备? (例如,像素C) 设置>开发人员选项? (我没有看到任何明显的事情,但我可能错过了它) 特定的模拟器配置? 一些adb命令? 一个魔法咒语,通过向后说一个命令演员? 我猜我们可能会在5月下旬看到一些本机支持自由forms模式的硬件,但我只是看看是否有一个选项可以尝试一下。

如何获取当前的语言环境(API级别24)?

我是这样做的: context.getResources().getConfiguration().locale 如果target是24,则不推荐使用Configuration.locale所以我进行了以下更改: context.getResources().getConfiguration().getLocales().get(0) 现在它说它只适用于minSdkVersion 24,所以我无法使用它因为我的最小目标较低。 什么是正确的方法?

Android:如何获取内容://外部存储PUBLIC目录中文件的URI

我已按照此Google教程开始使用new Intent(MediaStore.ACTION_IMAGE_CAPTURE)捕获图像。 本教程建议将公共目录与getExternalStoragePublicDirectory一起使用,这对我的应用程序非常getExternalStoragePublicDirectory 。 但是他们的例子改为使用getExternalFilesDir 。 然后使用MediaStore.EXTRA_OUTPUT将文件的URI传递给intent我必须获取内容URI,因为我想定位Android N.在定位NI之前,只需传递一个文件:// URI,除了Google之外的所有人都很高兴。 现在在NI上开始获得看起来不太有利的FileUriExposedException 。 所以鉴于我有这样的文件…… private File createImageFile() throws IOException { String timeStamp = new SimpleDateFormat(“yyyyMMdd_HHmmss”).format(new Date()); File storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), “MyAppFolder”); if (!storageDir.exists() && !storageDir.mkdir()) Log.w(TAG, “Couldn’t create photo folder: ” + storageDir.getAbsolutePath()); File image = new File(storageDir, timeStamp + “.jpg”); mCurrentPhotoPath = image.getAbsolutePath(); return image; […]

Android N – 虽然minSDK设置为14,但无法在较低的API上运行

在将compileSdkVersion更新为N但无法执行此操作后,我尝试在API 22设备上运行APK。 compileSdkVersion ‘android-N’ buildToolsVersion “24.0.0 rc1” defaultConfig { minSdkVersion 14 targetSdkVersion ‘N’ }

sdk platform-tools(23.1)太旧了,无法检查使用API​​ 24编译的API; 请更新

我在最新版本的Android Studio上收到此错误,同时我安装了Android SDK Platform API 24 Revision 1和Android SDK Build-Tools 24。 我也尝试过File> Invalidate Caches / Restart …和Build> Rebuild Project。 编辑:我也遵循Android开发者的所有说明,但我仍然得到这个错误。 提前感谢您的任何答案。

Android N:如何在分屏时单击通知时在当前活动窗口而不是第二个窗口中启动活动?

在Android N使用分屏时,我想在用户点击通知时在当前活动窗口中启动activity ,但是如果通过单击通知启动,则Android N始终在第二个窗口中启动activity 。 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notification) .setAutoCancel(false) .setContentTitle(“Demo Title”) .setContentText(“Demo”); Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.putExtra(“myIntent”, “test”); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(pendingIntent); NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = mBuilder.build(); notification.flags = Notification.FLAG_NO_CLEAR; mNotificationManager.notify(156, notification); 获得intent不是发布activity 。 Intent in = new Intent(MainActivity.this, […]

我们如何使用Android N网络安全配置获得自签名证书?

我试图测试N Developer Preview的网络安全配置function的所有方面。 我有大部分工作,但我被自签名证书场景困扰。 根据文档 ,Android N应该对PEM或DER文件感到满意,因为它适用于其他证书validation方案。 但是,我不能使用自签名证书,我尝试使用此function会继续运行证书路径validationexception。 为了测试,我使用thin作为服务器,在我的开发机器上运行,可以通过N模拟器访问。 自签名证书适用于我的开发计算机上的浏览器,如果我切换到运行thin sans SSL,应用程序可以很好地到达服务器。 所以,这不是连接问题。 我使用本网站上的说明创建了自签名证书: sudo openssl genrsa -out “/etc/[webserver]/ssl/example.key” 2048 sudo openssl req -new -key “/etc/[webserver]/ssl/example.key” \ -out “/etc/[webserver]/ssl/example.csr” sudo openssl x509 -req -days 365 -in “/etc/[webserver]/ssl/example.csr” \ -signkey “/etc/[webserver]/ssl/example.key” \ -out “/etc/[webserver]/ssl/example.crt” 根据此Stack Overflow回答 , example.crt文件是一个PEM文件。 在其他地方,我看到了创建“组合PEM”文件的说明 。 但是,我尝试了这两个,没有运气。 在网络安全配置方面,我尝试了和 。 后者看起来像: 但是,在任何一种情况下我都会得到validation错误。 作为原始资源,我们究竟应该将PEM或DER文件作为原始资源投入使用?

如何在Android N多窗口模式下确定正确的设备方向?

从多窗口文档 : 多窗口模式下禁用的function 当设备处于多窗口模式时,某些function被禁用或忽略,因为它们对于可能与其他活动或应用共享设备屏幕的活动没有意义。 这些function包括: 某些系统UI自定义选项已禁用; 例如,如果应用程序未以全屏模式运行,则无法隐藏状态栏。 系统忽略对android:screenOrientation属性的更改。 我得到了大多数应用程序,纵向和横向模式之间的区别是没有意义的,但是我正在使用SDK,其中包含用户可以进行任何活动的摄像机视图 – 包括支持多窗口模式的活动。 问题是摄像机视图包含显示摄像机预览的SurfaceView / TextureView,并且为了在所有活动方向上正确显示预览,需要有关正确活动方向的知识,以便可以正确旋转摄像机预览。 问题是我的代码通过检查当前配置方向(纵向或横向)和当前屏幕旋转来计算正确的活动方向。 问题是在多窗口模式下,当前配置方向不反映真实的活动方向。 这会导致相机预览旋转90度,因为Android报告的配置与方向不同。 我目前的解决方法是检查所请求的活动方向并以此为基础,但有两个问题: 请求的活动方向不必反映实际的活动方向(即可能仍未满足请求) 请求的活动方向可以是“后方”,“传感器”,“用户”等,它们不会显示有关当前活动方向的任何信息。 根据文档 ,在多窗口模式下实际上忽略了屏幕方向,因此1.和2.只是不起作用 即使在多窗口配置中,有没有办法可以稳健地计算正确的活动方向? 这是我目前使用的代码(请参阅有问题的部分的注释): protected int calculateHostScreenOrientation() { int hostScreenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); int rotation = getDisplayOrientation(wm); boolean activityInPortrait; if ( !isInMultiWindowMode() ) { activityInPortrait = (mConfigurationOrientation == Configuration.ORIENTATION_PORTRAIT); } else […]

Android Api 24找不到来源

我有这个成绩档案: //ext.support_library_version = ‘24.0.0’ android { compileSdkVersion 24 buildToolsVersion ‘24.0.0’ defaultConfig { applicationId “—” minSdkVersion 21 targetSdkVersion 24 versionCode 1 versionName “1.0” } … } 但是当我尝试打开任何与Android相关的类时,它表示我没有api24的来源,即使安装了buildToolsVersion ‘24.0.0’也是如此。 知道为什么吗?