Articles of android 7.0 nougat

Genymotion谷歌Nexus 6P 7.0.0与Open_Gapps arm 7.0.0

使用Genymotion 2.8.0 ,我安装了具有API级别24的Google Nexus 6P 7.0.0设备。启动设备后,我已经刷新了ARM虚拟转换器并重新启动了设备。 然后,我从http://opengapps.org/?download=true&arch=arm64&api=7.0&variant=pico下载了open_gapps,用于Playstore和其他应用程序的安装。 通过将open_gapps zip文件拖放到设备中,它将被复制到SDcard下载文件夹而不是安装谷歌应用程序。 请有人建议我哪里出错了。 提前致谢。

当app被杀/在后台时,检测Android 7及更高版本中的连接变化

问题: 所以问题是我有一个应用程序,当连接WiFi(连接的SSID和其他信息)或断开连接(通过移动网络)时,它会向我们的后端发送请求。 但是,随着Android 7 / N及更高版本的更改,CONNECTIVITY_CHANGE和CONNECTIVITY_ACTION不再在后台运行。 现在大多数情况下人们滥用这个广播,因此我完全理解为什么要做出改变。 但是,我不知道如何在当前状态下解决这个问题。 现在我不是一个Android开发人员(这是一个Cordova插件),所以我指望你们! 预期行为:即使应用程序被杀/在后台,每当WiFi切换连接时,应用程序都会被唤醒并发送请求。 当前行为:应用程序仅在应用程序位于前台时发送请求。 到目前为止尝试过:到目前为止,我已经将隐含的意图从清单中移动到侦听CONNECTIVITY_ACTION,并在应用程序的主要部分(插件)中手动注册它。 这使得它只要应用程序在内存中就可以工作,但不能在冷启动或实际背景下工作 已经看过:大多数答案谈论使用预定的工作来代替丢失的广播。 我看到这是如何工作的,例如,重试下载或类似,但不适用于我的情况(但如果我错了请纠正我)。 以下是我已经看过的SOpost: 当应用程序处于前台时,检测Android 7.0 Nougat上的连接更改 不推荐使用ConnectivityManager.CONNECTIVITY_ACTION 使用JobScheduler检测连接更改 Android O – 检测后台连接的变化

如何利用NotificationListener使用Android Nougat的直接回复function?

我的应用程序使用NotificationListener来读取来自各种第三方应用程序的消息,例如WhatsApp。 到目前为止,如果只有一个聊天未读,我能够发送回复,代码如下。 但是,在使用WhatsApp的情况下, getNotification().actions在未读取两个以上聊天时返回null对象,因为消息捆绑在一起。 正如您在下面的图片中看到的,如果通知被扩展,还有一个选项可以发送直接回复,因此我确信可以使用它,我认为像PushBullet这样的应用程序正在使用此方法。 我怎么能访问该通知的RemoteInput? public static ReplyIntentSender sendReply(StatusBarNotification statusBarNotification, String name) { Notification.Action actions[] = statusBarNotification.getNotification().actions; for (Notification.Action act : actions) { if (act != null && act.getRemoteInputs() != null) { if (act.title.toString().contains(name)) { if (act.getRemoteInputs() != null) return new ReplyIntentSender(act); } } } return null; } public static class ReplyIntentSender { […] […]

Android N没有发送android.net.conn.CONNECTIVITY_CHANGE广播?

我在沙盒Android N应用程序中定义了一个接收器: 这很简单: public class NetworkReceiver extends BroadcastReceiver { private static final String TAG = NetworkReceiver.class.getName(); @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, “Received Network Change event.”); } } 如果在我的build.gradle文件中我的targetSdkVersion是23,那么这个接收器工作正常。但是,如果我将targetSdkVersion设置为24,接收器永远不会收到任何东西。 事实上,如果我在我的接收器中放置一个调试断点,Android Studio会给我一个视觉指示,看起来该类甚至从未加载到内存中。 我是否错过了Android N文档中非常基本的内容? 有没有新的方法来检测连接变化事件?

IllegalArgumentException:列’_data’不存在

在Nougat中,此function无效。 String path = getRealPathFromURI(this, getIntent().getParcelableExtra(Intent.EXTRA_STREAM)); public String getRealPathFromURI(Context context, Uri contentUri) { Cursor cursor = null; try { String[] proj = {MediaStore.Images.Media.DATA}; cursor = context.getContentResolver().query(contentUri, proj, null, null, null); if (cursor == null) return contentUri.getPath(); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } finally { if (cursor != null) { cursor.close(); } } } […]

Android Internet连接检查更好的方法

根据Android开发者网站“ 确定和监控连接状态” ,我们可以检查是否存在活动的Internet连接。 但即使只连接了Wi-Fi而没有互联网可用(它通知有互联网连接),这也无效。 现在我ping一个网站,检查互联网连接是否可用。 而且这种方法需要更多的处理时间。 是否有更好的方法来检查Internet连接,以避免ping地址的时间延迟?

java.lang.SecurityException:不再支持MODE_WORLD_READABLE

例外情况仅发生在Android 7.0 Nougat(模拟器)设备中。 java.lang.SecurityException:不再支持MODE_WORLD_READABLE 我的代码: public void SessionMaintainence(Context context) { this.context = context; preferences = context.getSharedPreferences(PREF_NAME, Context.MODE_WORLD_READABLE); editor = preferences.edit(); editor.commit(); } logcat的: > E/AndroidRuntime: FATAL EXCEPTION: main > Process: burpp.av.feedback, PID: 2796 > java.lang.RuntimeException: Unable to create application > burpp.av.feedback.FeedbackApplication: java.lang.SecurityException: > MODE_WORLD_READABLE no longer supported > at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5364) > at android.app.ActivityThread.-wrap2(ActivityThread.java) > at […]

列出存储在用户凭据中的证书

在Android 7 Nougat中,用户安装的证书转到“用户凭据”而不是“可信凭证”(由系统凭据和用户凭证组成)。 我过去通过以下方式访问“受信任的凭据”: KeyStore keystore = KeyStore.getInstance(“AndroidCAStore”); 通过上面的代码,我可以访问系统和用户可信凭证。 但现在,在Android 7中,用户安装的证书将转到Settings –> Security –> User credentials下名为“用户凭据”的单独位置。 我的问题是如何以编程方式列出Android 7中User credentials内的User credentials ?

NestedScrollView在Nougat上阻止bug(API 25)

我在Nexus 5x(7.1.2)和Google Pixel(7.1.1)上使用NestedScrollView时遇到了一个奇怪的问题。 在其他OS版本上它可以正常工作。 举起animation有时会在举起手指后立即停止。 它停滞不前,接下来的几次飞行也可能停止。 为了重现它,你需要上下几次投掷。 在日志中,这些flings在速度,方向等方面看起来几乎相同,所以我找不到这个bug的真正原因。 NestedScrollView也不一定需要在CoordinatorLayout ,它也可以没有NestedScrollingChild 。 例如,使用以下NestedScrollView子项之一可以重现此错误: 1)使用TextViews填充LinearLayout 2) WebView 3)使用RecyclerViews填充LinearLayout 。 我知道CoordinatorLayout RecyclerView和Behaviors可能存在的问题,但它没有关系。 所以请不要提及任何 recyclerView.getLayoutManager().setAutoMeasureEnabled(true); recyclerView.setNestedScrollingEnabled(false); 或类似的东西。 代码示例:

以编程方式接受Nougat中的呼叫

从一年开始,我一直在研究IOT产品,附带的应用程序运行正常。 现在我无法在更高版本的android中以编程方式接受调用。 function对产品非常重要。 任何帮助都非常感谢。 在2016年11月安全补丁更新之前, Runtime.getRunTime.exec(“Command”)工作正常以编程方式接受调用。 Runtime.getRuntime().exec(“input keyevent ” +Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK)); 如何在Nougat版本的android中实现它。 寻找任何types的黑客。 我已经为增强function打开了一个post。 https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&groupby=&sort=&id=231938 注意*如果您中的任何一方遇到同样的问题,请向Android Dev Team请求加入并提供规定以获得用户的运行时权限。 按照上面提到的URL来请求。