簡體   English   中英

V2 Maps Library是否需要ACCESS_NETWORK_STATE權限?

[英]Does the V2 Maps Library require the ACCESS_NETWORK_STATE permission?

我在我發布的應用中使用了Android V2 Google地圖庫(Google Play服務)。 我一直看到Google Play中出現的零星異常似乎表明支持地圖片段偶爾會嘗試檢查網絡狀態。 但是,庫文檔未提及此權限是必需的。 我不直接在我的應用程序中檢查網絡狀態,所以我沒有聲明此權限。 因此,在膨脹支持映射片段時有時會拋出SecurityException

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.foo/com.foo.ui.TransactionDetailActivity}: android.view.InflateException: Binary XML file line #327: Error inflating class fragment
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    at android.app.ActivityThread.access$600(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5039)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #327: Error inflating class fragment
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:459)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
    at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(SourceFile:119)
    at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SourceFile:262)
    at com.foo.ui.TransactionDetailActivity.onCreate(SourceFile:129)
    at android.app.Activity.performCreate(Activity.java:5104)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    ... 11 more
Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10106 nor current process has android.permission.ACCESS_NETWORK_STATE.
    at android.os.Parcel.readException(Parcel.java:1425)
    at android.os.Parcel.readException(Parcel.java:1379)
    at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:623)
    at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:425)
    at maps.bm.e.e(Unknown Source)
    at maps.bm.e.a(Unknown Source)
    at maps.z.ag.a(Unknown Source)
    at maps.z.ag.a(Unknown Source)
    at maps.z.ag.a(Unknown Source)
    at maps.z.bw.a(Unknown Source)
    at maps.z.r.onCreateView(Unknown Source)
    at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:107)
    at android.os.Binder.transact(Binder.java:310)
    at com.google.android.gms.maps.a.l.a(Unknown Source)
    at com.google.android.gms.maps.m.a(Unknown Source)
    at com.google.android.gms.internal.ap.a(Unknown Source)
    at com.google.android.gms.internal.al.a(Unknown Source)
    at com.google.android.gms.internal.al.a(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
    at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:846)
    at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1061)
    at android.support.v4.app.FragmentManagerImpl.addFragment(SourceFile:1160)
    at android.support.v4.app.FragmentActivity.onCreateView(SourceFile:272)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
    ... 28 more

我已在我的清單中聲明了相關權限,並將查看是否可以解決問題。 然而,有人認為這只會發生在某些設備而不是其他設備上。 例如,這在我們的內部測試設備和許多其他設備上運行良好。 有沒有人對這個神秘的問題有任何見解? 它可能是由一個程序錯誤引起的嗎?

編輯1:使用Google Play服務庫的2.0.10版(541717-10)時發生此錯誤。

隨着最新版本的Google Play服務庫, 文檔已更新 ,表明需要此權限。

發行說明指出了為什么需要此權限:

提高從獲得網絡連接的恢復。 此修復程序需要ACCESS_NETWORK_STATE權限。

是。 任何使用getActiveNetworkInfo()方法都需要網絡狀態訪問權限。

你的Manifest中的以下行應該可以解決問題:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM