Ibeacon Altbeacon停止了Android10的工作,并且根本没有调用didEnterRegion

Ibeacon Altbeacon停止了Android10的工作,并且根本没有调用didEnterRegion,ibeacon,altbeacon,android-ibeacon,android-10.0,kontakt.io,Ibeacon,Altbeacon,Android Ibeacon,Android 10.0,Kontakt.io,安卓10已经停止工作。特别是Android 10是否需要进行任何更改 我已将以下权限添加到我的AndroidManifest.xml <uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/> <uses-permission android:name=\"android.permission.BLUETOOTH\"/> <uses-permission android:name=\"

安卓10已经停止工作。特别是Android 10是否需要进行任何更改

我已将以下权限添加到我的
AndroidManifest.xml

<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>
<uses-permission android:name=\"android.permission.BLUETOOTH\"/>
<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>
<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\"/>
<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />
<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>


查看应用程序权限,我的应用程序具有运行时授予的位置和BT权限。我开始在BeaconserviceConnect上查找信标,如中所述。我遗漏了什么?

Android 10添加了新的权限要求来执行BLE扫描和检测BLE信标——任何应用程序设置
targetSdkVersion 29
或更高版本都需要获得如下所述的权限,否则将检测不到信标。(如果您设置了
targetSdkVersion 28
或更早版本,这些新要求在Android 10上运行时不适用,因为Android会自动授予权限。这允许旧应用在升级到Android 10后继续运行,而不受影响。)

如果将项目设置为
targetSdkVersion 29
或更高版本,则需要进行以下更改:

除了将这些权限添加到清单中之外:


您还必须动态地从用户处获取位置权限,如下所述:

private static final int PERMISSION\u REQUEST\u FINE\u LOCATION=1;
私有静态最终int权限\请求\后台\位置=2;
...
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
...
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.M){
if(this.checkSelfPermission(Manifest.permission.ACCESS\u FINE\u位置)
==PackageManager.权限(已授予){
if(this.checkSelfPermission(Manifest.permission.ACCESS\u BACKGROUND\u LOCATION)
!=PackageManager.权限(已授予){
if(this.shouldshowRequestPermission基本原理(Manifest.permission.ACCESS\u BACKGROUND\u LOCATION)){
final AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setTitle(“此应用程序需要后台位置访问”);
setMessage(“请授予位置访问权限,以便此应用程序可以检测背景中的信标。”);
setPositiveButton(android.R.string.ok,null);
builder.setOnDismissListener(新的DialogInterface.OnDismissListener(){
@塔吉塔皮(23)
@凌驾
公共void onDismiss(对话框接口对话框){
requestPermissions(新字符串[]{Manifest.permission.ACCESS\u BACKGROUND\u LOCATION},
权限\请求\背景\位置);
}
});
builder.show();
}
否则{
final AlertDialog.Builder=新建AlertDialog.Builder(此);
建造商。setTitle(“功能有限公司”);
builder.setMessage(“由于未授予后台位置访问权限,此应用程序将无法在后台发现信标。请转到设置->应用程序->权限并授予此应用程序的后台位置访问权限。”);
setPositiveButton(android.R.string.ok,null);
builder.setOnDismissListener(新的DialogInterface.OnDismissListener(){
@凌驾
公共void onDismiss(对话框接口对话框){
}
});
builder.show();
}
}
}否则{
if(this.shouldshowRequestPermissionRegulation(Manifest.permission.ACCESS\u FINE\u LOCATION)){
requestPermissions(新字符串[]{Manifest.permission.ACCESS\u FINE\u位置,
Manifest.permission.ACCESS\u BACKGROUND\u LOCATION},
许可、请求、罚款、地点);
}
否则{
final AlertDialog.Builder=新建AlertDialog.Builder(此);
建造商。setTitle(“功能有限公司”);
builder.setMessage(“由于未授予位置访问权限,此应用程序将无法发现信标。请转到设置->应用程序->权限并授予此应用程序的位置访问权限。”);
setPositiveButton(android.R.string.ok,null);
builder.setOnDismissListener(新的DialogInterface.OnDismissListener(){
@凌驾
公共void onDismiss(对话框接口对话框){
}
});
builder.show();
}
}
}
}
@凌驾
公共无效onRequestPermissionsResult(int requestCode,
字符串权限[],int[]grantResults){
开关(请求代码){
案例许可申请罚款地点:{
if(grantResults[0]==已授予PackageManager.权限){
Log.d(标签“授予的精细位置许可”);
}否则{
final AlertDialog.Builder=新建AlertDialog.Builder(此);
建造商。setTitle(“功能有限公司”);
setMessage(“由于未授予位置访问权限,此应用程序将无法发现信标。”);
setPositiveButton(android.R.string.ok,null);
builder.setOnDismissListener(新的DialogInterface.OnDismissListener(){
@凌驾