我的 Roximity SDK 不断崩溃,
这是我的摇篮:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':cropper')
compile project(':main')
compile project(':ROXIMITY_SDK_1_3_73')
compile 'com.mcxiaoke.volley:library:1.0.19'
compile 'com.google.code.gson:gson:2.2.4'
compile 'org.slf4j:slf4j-api:1.7.10'
compile 'com.google.android.gms:play-services-base:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'org.apache.httpcomponents:httpmime:4.5.2'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.android.support:appcompat-v7:23.1.1'
我的清单:
我正在根据文档页面上提到的说明使用代码http://docs.roximity.com/mobile/android/integration,在 onCreate 中:
ROXIMITYEngine.startEngineWithOptions(this.getApplicationContext(), R.drawable.ic_launcher, null, this, null);
createBroadcastRecievers();
定义:
private void createBroadcastRecievers(){
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ROXConsts.MESSAGE_FIRED);
intentFilter.addAction(ROXConsts.BEACON_RANGE_UPDATE);
intentFilter.addAction(ROXConsts.WEBHOOK_POSTED);
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter);
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(ROXConsts.MESSAGE_FIRED)) {
MessageParcel messageParcel = (MessageParcel)intent.getParcelableExtra(ROXConsts.EXTRA_MESSAGE_PARCEL);
handleMessageFired(messageParcel);
} else if (intent.getAction().equals(ROXConsts.BEACON_RANGE_UPDATE)){
String rangeJson = intent.getStringExtra(ROXConsts.EXTRA_RANGE_DATA);
handleBeaconRangeUpdate(rangeJson);
}
}
};
现在它的行为完全奇怪。有时它根本没有检测到信标并发送空包作为响应。有时会在几分钟内检测到信标,并且在一两次更新后大多会崩溃。这是崩溃报告:致命异常:主进程:
java.lang.NullPointerException:尝试从 android.location 的 android.location.Location.set(Location.java:131) 的空对象引用上的字段“java.lang.String android.location.Location.mProvider”读取。 Location.(Location.java:124) at com.roximity.sdk.location.RoxLocation.(RoxLocation.java:30) at com.roximity.sdk.actions.bb(ActionManager.java:265) at com.roximity.sdk .actions.bc(ActionManager.java:213) 在 com.roximity.sdk.beacons.cc(RangingManager.java:169) 在 com.roximity.sdk.beacons.cb(RangingManager.java:107) 在 com.roximity.sdk.beacons.ca(RangingManager.java :84) 在 com.roximity.system.ble.dj(BluetoothScanController.java:286) 在 com.roximity.system.ble.f.run(BluetoothScanController.java:257) 在 android.os.Handler。handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java :5835) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os 的 java.lang.reflect.Method.invoke(Native Method)。ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
我已经尝试了几乎所有可能的解决方案,这不是应用程序端的问题,也没有通过更改他们推荐的代码来解决。任何解决方案都将受到高度赞赏。