![](/img/trans.png)
[英]Oracle MAF and requesting permissions in Android 6.0 (API level 23)
[英]Oracle MAF - Requesting GPS location causes fatal OS exception in android 6.0
當我從MAF的“ DeviceDemo”示例中測試GPS服務時,出現以下錯誤:
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)
操作系統崩潰並重新啟動。 當我在deviceManager實例上調用“ startUpdatingPosition”方法時,也會在我自己的應用程序中發生這種情況。
deviceManager.startUpdatingPosition(300, true, "MapBean.mainGeoListener", bean)
“ deviceManager.getCurrentPosition”也失敗。 完整代碼如下。
僅當在GenyMotion中將Android 6.0與模擬的三星s6結合使用時,才會發生此崩潰(我無法測試真實的設備)。 我的物理三星s5上的Android 6.0沒有此問題。 帶有任何(模擬)設備的Android 5.1也不存在此問題。
這是我的設置:
我已經對Android 6.0的新權限系統進行了一些研究,並擔心這是問題的根源,但是到目前為止,我所讀到的任何內容都未提出任何解決方案。
我還計划專門調查這是否是GenyMotion的問題,但是這對我來說有點挑戰,因為獲取s6並不簡單,而且我沒有Intel CPU,因此標准的Android虛擬設備(AVD)運行太慢在那里測試。 社區提供的任何幫助將不勝感激(oracle的“ 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();
}
}
}
}
我在運行Android 6.0時遇到了完全相同的問題。 我使用Ionic和ngCordova構建了一個應用程序。 在仿真的5.2設備(Genymotion)上,它可以很好地運行,但在6.0 Genymotion設備上運行,則失敗,並顯示“ java.lang.IllegalArgumentException:提供程序不存在:網絡”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.