Articles of android 6.0 marshmallow

蓝牙LE ScanFilters无法在Android M上运行

以下代码适用于运行Android 5.1.1(Build LMY48M)的Nexus 9,但不适用于运行Android 6.0的Nexus 9(Build MPA44l) List filters = new ArrayList(); ScanSettings settings = (new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)).build(); ScanFilter.Builder builder = new ScanFilter.Builder(); builder.setManufacturerData((int) 0x0118, new byte[]{(byte) 0xbe, (byte) 0xac}, new byte[]{(byte) 0xff, (byte)0xff}); ScanFilter scanFilter = builder.build(); filters.add(scanFilter); mBluetoothLeScanner.startScan(filters, settings, new ScanCallback() { … }); 在Android 5.x上,当看到与扫描filter匹配的制造商广告时,上述代码产生回调。 (参见下面的示例Logcat输出。)在带有MPA44l的Nexus 9上,没有收到回调。 如果您注释掉扫描filter,则会在Nexus 9上成功收到回叫。 09-22 00:07:28.050 1748-1796/org.altbeacon.beaconreference D/BluetoothLeScanner﹕ […]

调用需要API级别23(当前最小值为14):android.app.Activity#requestPermissions,checkSelfPermission

我正在尝试添加运行时权限android(6.0.1)API 23,如果我使用SDK版本( min和目标版本都是23 )它很好,如下所示, 如果我改变android:minSdkVersion(少于23) 例如: 我收到以下错误: 调用需要API级别23(当前最小值为14):android.app.Activity#requestPermissions,checkSelfPermission 对于以下2种方法, 1)requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS) 2)checkSelfPermission(permission) 我试过ActivityCompat.checkSelfPermission()和ContextCompat.checkSelfPermission()都不起作用。 我错过的东西无法理解..

Android 6.0 RuntimeException:无法连接到摄像头服务

我的应用程序在Nexus5(Android6.0)中运行时出错。 错误是 java.lang.RuntimeException:无法连接到摄像头服务 我已经将权限添加到AndroidManifest.xml中。 但该应用程序可以使用另一部手机(Android5.1)和genymotion AVD(Android 4.0)。 关键代码如下 @Override public void onResume() { super.onResume(); try { mCamera = Camera.open(); }catch (Exception e){ Log.e(TAG,”open camera failed”,e); } }

Android marshmallow动态权限更改会杀死所有应用程序进程

观察:手动更改Android应用程序的权限会终止此应用程序的所有进程。 过程:转到设置 – >应用程序选择应用程序和权限。 禁用其中一个权限。 设备:运行Android Marshmallow 6.0的Nexus 6设备 当我从启动器启动应用程序时,它启动了在此应用程序的权限更改之前位于顶部的活动。 这与我们通过从UI多任务菜单中刷出应用程序来终止应用程序进程时的行为不同。 在这种情况下,首先创建启动器活动。 也就是说,为了使应用程序在更改权限后启动时能够正常工作,它不能依赖启动的启动器活动。 这是所有Android 6.0+设备上具有动态权限的预期行为吗? 为什么通过从UI多任务菜单中刷出应用程序进程来杀死应用程序时的行为有何不同?

如何在Android Marshmallow中获取Chrome历史记录和书签(API> = 23)?

直到API等级22(即直到Lollipop),有一种方法可以使用权限com.android.browser.permission.READ_HISTORY_BOOKMARKS从Chrome应用程序中读取历史记录和书签( 如此主题所示)。 现在,在Android API = 23 Marshmallow中,由于整个浏览器书签系统已在Marshmallow中删除( 此处更改 ),因此上述方法不再起作用。 这是一个线程 ,显示了为什么这不再可能。 在我的研究中,到目前为止,我还没有find好消息。 谷歌确实杀死了系统书签function( 这里和这里 ),问题是Chrome浏览器是否会以任何方式公开它? 在Android Marshmallow中,有没有替代/方式来阅读Chrome中的书签和历史记录(甚至Chrome特定的答案会回答这个问题)?

是否可以在最低SDK <23时设置checkSelfPermission?

Android-M中的新运行时权限要求最低23个API级别,但我的项目中仍需要最低16个API级别。 那么,如何使这个代码更向前兼容? 问候

替换呼叫应用程序

背景 我正在尝试开发一个非常简单的通话应用程序来替换库存版本。 基本上,我只想回答来电并向用户展示一个非常简单的自定义UI。 不需要拨出电话或任何花哨的东西。 在网上搜索我发现包android.telecom.incallservice (在API 23中可用)。 该服务由希望提供用于管理电话呼叫的用户界面的任何应用程序实现。 这看起来很有希望,但我无法让它发挥作用。 我已经创建了扩展InCallService的简单服务,并在文档中描述的清单中声明它。 但是,我希望能够将设置中的默认手机应用程序更改为我自己的,但我只能find手机应用程序。 码 这是来自文档的清单声明。 我用BIND_INCALL_SERVICE替换了BIND_IN_CALL_SERVICE ,因为我猜这是一个错字。 问题 是否有可能第三方应用程序替换调用应用程序中的默认值? 是否有任何使用此API的示例实现我可以用作参考? 我find了谷歌的实现 ,但这是一个系统应用程序,它利用了一些其他应用程序无法使用的权限(例如: android.permission.MODIFY_PHONE_STATE )。 我是否正确假设在提供正确的InCallService清单注册和存根实现后,我可以在Default Apps -> Phone下find我的应用程序? 我需要申报其他东西吗? 谢谢。

如何管理运行时权限android marshmallow espresso测试

我正在使用浓缩咖啡进行测试,但有时我会尝试从外部存储中获取图像,并且使用棉花糖我需要运行时权限,否则会出现exception崩溃,测试将失败。 androidTestCompile ‘com.android.support.test:runner:0.4’ androidTestCompile ‘com.android.support.test:rules:0.4’ androidTestCompile ‘com.android.support.test.espresso:espresso-core:2.2.1’ androidTestCompile ‘com.android.support.test.espresso:espresso-intents:2.2.1’ androidTestCompile(‘com.android.support.test.espresso:espresso-contrib:2.2.1’) { // this library uses the newest app compat v22 but the espresso contrib still v21. // you have to specifically exclude the older versions of the contrib library or // there will be some conflicts exclude group: ‘com.android.support’, module: ‘appcompat’ exclude group: ‘com.android.support’, module: […]

如何在Android中自定义权限对话框?

假设我在运行时请求权限,如下所示: ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); Android系统会创建一个popup对话框来请求权限。 如何为该对话框定义自定义布局?

Android getAllNetworkInfo()已弃用。 有什么选择?

我想使用连接管理器,它提供方法getAllNetworkInfo()来检查Android中的网络可用性。 此方法在API级别23中已弃用。而Developer doc建议使用getAllNetworks()。 我试过但是没有得到我从旧代码中获得的确切function。 请有人指导我如何使用getAllNetworks()方法。 下面是我正在使用的代码: public boolean isConnectingToInternet(){ ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { @SuppressWarnings(“deprecation”) NetworkInfo[] info = connectivity.getAllNetworkInfo(); //use getAllNetworks() instead if (info != null) for (int i = 0; i < info.length; i++) if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } return false; }