Tag: android 6.0 棉花糖

您可以在Android Marshmallow(API 23)的运行时权限模型中同步请求权限吗?

假设你有这样的方法: public boolean saveFile (Url url, String content) { // save the file, this can be done a lot of different ways, but // basically the point is… return save_was_successful; } 在整个应用程序中,如果要将文件保存到外部存储,则可以执行以下操作: if (saveFile(external_storage_url, "this is a test")) { // yay, success! } else { // notify the user something was wrong or handle the […]

在Android 6.0上需要启用蓝牙低能耗扫描的位置

升级到Android版本6.0后,只有在设备上启用位置服务的情况下,蓝牙低功耗(BLE)扫描才能工作。 请参阅此处以供参考: Android 6.0上的Bluetooth Low Energy startScan无法find设备 基本上,您需要为应用程序以及电话启用权限。 这是一个错误? 有没有实际启用的位置服务可以扫描? 我不想有所有我的应用程序的位置。 编辑我没有提到,我在API 21中提供的BluetoothLeScanner使用startScan()方法。我没有与该方法需要清单中的课程和罚款位置权限。 我只是不希望我的应用程序的用户必须在他们的设备(GPS等)上启用位置服务才能使用我的应用程序。 之前, startScan()方法将运行并返回结果,并在手机上禁用定位服务。 然而,在棉花糖,同样的应用程序将“扫描”,但沉默失败,没有结果时,位置服务没有启用电话和课程/罚款位置权限仍然在清单中没有结果。

我们如何区分Android M的运行时权限从未停止询问?

根据Google的说法,当涉及到M Developer Preview运行时权限时: 如果你以前从来没有要求过一定的许可,那就问问吧 如果您之前询问过,并且用户说“不”,然后用户尝试做一些需要拒绝的权限,您应该提示用户解释为什么您需要权限,然后再继续请求权限 如果你之前问了几次,并且用户说“不,并停止询问”(通过运行时权限对话框中的checkbox),你应该停止打扰(例如,禁用需要权限的用户界面) 但是,我们只有一个方法, shouldShowRequestPermissionRationale() ,返回一个boolean ,我们有三个状态。 我们需要一种方法来区别从问的状态和停止问的状态,因为我们从shouldShowRequestPermissionRationale()获取false 。 对于第一次运行应用程序时要求的权限,这不是一个大问题。 有很多的食谱来确定这可能是你的应用程序的第一次运行(例如, SharedPreferences boolean值),所以你假设如果这是你的应用程序的第一次运行,你是在从未问过的状态。 然而,运行时权限的一部分是你可能不会要求所有这些。 权限绑定到附加function,你可能只会问,当用户点击需要权限的东西。 在这里,应用程序可能已经运行了很多次,几个月之后,我们突然之间需要再次申请许可。 在这些情况下,我们是否应该跟踪自己是否要求获得许可? 或者在Android M API中有什么东西可以告诉我们我们之前是否问过?

Android 6.0上的蓝牙低功耗startScan无法find设备

我正在开发一款使用Nexus 5的低功耗蓝牙应用程序。它在棒棒糖上工作,现在它不能在棉花糖上工作。 我在清单中和运行时的Activity中设置了ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限。 这是ScanFilters的列表: mScanFilterTest = new ScanFilter.Builder().build(); mScanFilter = new ArrayList<ScanFilter>(); mScanFilter.add(mScanFilterTest); 这些是设置: mScanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER).setReportDelay(0) .setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES).build(); 这些是我的callback: mBLEScan = new ScanCallback() { @Override public void onScanResult(int callbackType, ScanResult result) { super.onScanResult(callbackType, result); Log.i(TAG, "******************************************"); Log.i(TAG, "The scan result " + result); Log.i(TAG, "——————————————"); } }; 这是我的电话: mBluetoothLeScanner.startScan(mScanFilter, mScanSettings, mBLEScan); 它开始扫描,但没有find任何设备。 请帮帮我!!!!

如何以编程方式打开Android棉花糖上的特定应用程序的权限屏幕?

我有一个关于新的Android棉花糖版本的问题: 通过意图或类似的方式显示特定应用程序的权限屏幕是否可行? 可以使用下面的代码显示应用程序设置 – 是否有直接打开权限屏幕的模拟解决scheme? startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", getPackageName(), null))); 我已经做了一些这方面的研究,但是我找不到一个合适的解决scheme – 我会感谢每一个帮助!