Я должен представить, что у вас такая же проблема, как и у меня, для SDK 23 вы должны заставить пользователя подтвердить, что они разрешают ACCESS_COARSE_LOCATION. (Я предполагаю, что вы выполняете поиск в BLE)
посмотрите на консольный журнал, и я предполагаю, что вы найдете очень сложную ошибку, которая выглядит так, выделенная синим цветом.
java.lang.SecurityException: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan results
at android.os.Parcel.readException(Parcel.java:1627)
at android.os.Parcel.readException(Parcel.java:1579)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.startScan(IBluetoothGatt.java:772)
at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper.onClientRegistered(BluetoothLeScanner.java:324)
at android.bluetooth.IBluetoothGattCallback$Stub.onTransact(IBluetoothGattCallback.java:56)
at android.os.Binder.execTransact(Binder.java:453)
Оказывается, что вам необходимо получить разрешение пользователя (например, приложение IOS), поэтому вам нужно добавить в некоторый код в вас инициализации, как этот
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
if (this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){
if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_COARSE_LOCATION)){
if (DEBUG) Log.i(TAG, "EXPLANATION NEEDED");
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Warning Permission Needed");
builder.setMessage("If you don't enable the location for this app then we can not connect to the controller");
builder.setPositiveButton("Change", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_LOCATION);
}
}
});
AlertDialog dialog = builder.create();
dialog.show();
}else{
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},REQUEST_LOCATION);
}
}
}
Здесь вы должны обращаться, что делать, если пользователь не читает сообщение, а клики отрицают. поэтому проверьте возвращение в поле ниже методе
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_LOCATION){
if (grantResults[0] != PackageManager.PERMISSION_GRANTED){
// ask the question again as they denied the permission
}
}
}
В конце концов, что вы это все вдруг снова работать, если ваша проблема была, как моя
Спасибо за ваш ответ, но как вы можете видеть в манифесте есть эти разрешения уже есть. И если вы проверите приложение, вы можете глубже взглянуть на ситуацию. еще раз спасибо – Lug