2016-08-31 13 views
0

Когда я протестировать услуги GPS в примере «DeviceDemo» от MAF я получаю следующее сообщение об ошибке:Oracle MAF - Запрос местоположения GPS приводит к неустранимым OS в Android 6.0

07-14 02:00:15.204 2657 2657 D AndroidRuntime: Shutting down VM 
07-14 02:00:15.204 2657 2657 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main 
07-14 02:00:15.204 2657 2657 E AndroidRuntime: java.lang.IllegalArgumentException: provider doesn't exist: network 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.server.LocationManagerService.requestLocationUpdatesLocked(LocationManagerService.java:1637) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.server.LocationManagerService.requestLocationUpdates(LocationManagerService.java:1616) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at android.location.LocationManager.requestLocationUpdates(LocationManager.java:880) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at android.location.LocationManager.requestLocationUpdates(LocationManager.java:496) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.location.fused.FusionEngine.enableProvider(FusionEngine.java:142) 

07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.location.fused.FusionEngine.updateRequirements(FusionEngine.java:195) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.location.fused.FusionEngine.setRequest(FusionEngine.java:118) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.location.fused.FusedLocationProvider$1.handleMessage(FusedLocationProvider.java:98) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at android.os.Looper.loop(Looper.java:148) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.server.SystemServer.run(SystemServer.java:285) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.server.SystemServer.main(SystemServer.java:170) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
07-14 02:00:15.204 2657 2657 E AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

аварийно завершает работу операционной системы и перезагрузки. Это происходит и в моем собственном приложении, когда я вызываю метод startUpdatingPosition в экземпляре deviceManager.

deviceManager.startUpdatingPosition(300, true, "MapBean.mainGeoListener", bean) 

"deviceManager.getCurrentPosition" также не работает. Полный код, указанный ниже.

Этот сбой возникает только при объединении Android 6.0 с эмулированным Samsung s6 в GenyMotion (я не могу протестировать реальное устройство). Android 6.0 на моем физическом Samsung s5 не имеет этой проблемы. И Android 5.1 с любым (эмулированным) устройством также не имеет этой проблемы.

Вот мой набор вверх:

  • Oracle Enterprise Пакет для Затмения (12.2.1.3.1) - В "Неон" пакет
  • Устройство: Samsung Genymotion S6 эмулировать устройство, работает Android 6.0.0 (API23)
  • SDK: построить инструменты/платформенные инструменты 24
  • SDK инструменты 25.1.7

я сделал некоторые исследование новой системы разрешений для Android 6.0, и я обеспокоен тем, что это является причиной проблемы, однако ничто из того, что я до сих пор не читал, предлагает какое-либо решение.

Я также планирую выяснить, является ли это проблемой только с GenyMotion, однако для меня это несколько сложно, так как приобретение s6 не просто, и у меня нет процессора Intel, поэтому стандартное Android-устройство (AVD)) работает слишком медленно, чтобы проверить его там. Любая помощь со стороны сообщества в этом отношении была бы весьма признательна (пример «DeviceDemo» из оракула довольно легко проверить).

Вот нить обновления позиции обработки:

package bsaf.atlas.atlasapplication; 
import oracle.adf.model.datacontrols.device.DeviceManager; 
import oracle.adf.model.datacontrols.device.DeviceManagerFactory; 

public class ConnectionListener extends Thread { 

    private DeviceManager deviceManager; 
    private MapCore bean; 

    public ConnectionListener(MapCore paramBean) 
    { 
     this.bean = paramBean; 
     this.deviceManager = DeviceManagerFactory.getDeviceManager(); 
     System.out.println("I have been created!"); 
    } 

    public void run() 
    { 
     while(true) 
     { 
      try 
      { 
       System.out.println("Connection thread trying to hook to listener"); 
       bean.setLocationWatcherID(deviceManager.startUpdatingPosition(300, true, "MapBean.mainGeoListener", bean)); 
       System.out.println("Setting immediate position"); 
       bean.setUserLocation(deviceManager.getCurrentPosition(500, true)); 
       System.out.println("Hook success: " + bean.getLocationWatcherID()); 
       break; 
      } 
      catch (oracle.adfmf.framework.exception.AdfException e) 
      { 
       System.out.println("Connection Listener Exception:" + e); 
       try { 
        System.out.println("Sleeping thread to retry"); 
        Thread.sleep(500); 
       } catch (InterruptedException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 

    } 
} 
+0

Мне удалось проверить это на Samsung Galaxy S6, работающем Android 6.01 и никаких сбоев нет, поэтому это проблема с GenyMotion. Я скоро свяжусь с их технической поддержкой и отвечу сюда своими выводами. – Rohan

ответ

0

У меня точно такой же вопрос под управлением Android 6.0. Я создал приложение с использованием Ionic с ngCordova. На эмулированном устройстве 5.2 (Genymotion) он отлично работает, но работает на устройстве Genymotion 6.0 с ошибкой «java.lang.IllegalArgumentException: провайдер не существует: сеть»

+0

Да, кажется, проблема с геномиотизмом. Хорошая новость заключается в том, что он работает на самом устройстве. Сегодня я напишу отчет об ошибках и назову их здесь. Спасибо за публикацию, хорошо знать, что я не единственный, кто это испытывает. – Rohan

+0

Да, я не понимаю проблему на самом устройстве, но похоже, что плагин ngCordova geolocation не работает на Android 6.0. У меня есть Честь 6. Но да, это еще одна проблема и не нужно ничего делать с Genymotion. – Bart

 Смежные вопросы

  • Нет связанных вопросов^_^