when i using okhttp3 , this crash happens in my users devices , like android4.4、4.3、5.0, please tell me how to solve it ! 3Q!
its not permissions problem :
this is my crash detail message:
java.lang.SecurityException: Permission denied (missing INTERNET permission?)
at java.net.InetAddress.lookupHostByName(InetAddress.java:471)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:259)
at java.net.InetAddress.getAllByName(InetAddress.java:221)
at okhttp3.y.a(Dns.java:39)
at okhttp3.internal.connection.e.a(RouteSelector.java:172)
at okhttp3.internal.connection.e.d(RouteSelector.java:138)
at okhttp3.internal.connection.e.b(RouteSelector.java:80)
at okhttp3.internal.connection.f.a(StreamAllocation.java:178)
at okhttp3.internal.connection.f.a(StreamAllocation.java:129)
at okhttp3.internal.connection.f.a(StreamAllocation.java:98)
at okhttp3.internal.connection.a.a(ConnectInterceptor.java:42)
at okhttp3.internal.b.k.a(RealInterceptorChain.java:92)
at okhttp3.internal.b.k.a(RealInterceptorChain.java:67)
at okhttp3.internal.a.a.a(CacheInterceptor.java:109)
at okhttp3.internal.b.k.a(RealInterceptorChain.java:92)
at okhttp3.internal.b.k.a(RealInterceptorChain.java:67)
at okhttp3.internal.b.a.a(BridgeInterceptor.java:93)
at okhttp3.internal.b.k.a(RealInterceptorChain.java:92)
at okhttp3.internal.b.n.a(RetryAndFollowUpInterceptor.java:124)
at okhttp3.internal.b.k.a(RealInterceptorChain.java:92)
at okhttp3.internal.b.k.a(RealInterceptorChain.java:67)
at okhttp3.ak.g(RealCall.java:170)
at okhttp3.ak.a(RealCall.java:33)
at okhttp3.ak$a.c(RealCall.java:120)
at okhttp3.internal.b.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
at libcore.io.Posix.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
at java.net.InetAddress.lookupHostByName(InetAddress.java:445)
... 27 more
Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
... 30 more
It appears your users have taken away Internet permission using some kind of Android hack.
Can you reproduce this in a simplified project or test?
The stack trace literally says java.lang.SecurityException: Permission denied (missing INTERNET permission?).
Do you have <uses-permission android:name="android.permission.INTERNET"/> declared in your manifest? If so, then users have revoked it with some hacks.
Your option are basically either check Context.checkPermission(INTERNET, Process.myPid(), Process.myUid()) == PERMISSION_GRANTED at runtime or ignore this. Do the latter.
I see some of these traces in our app too after updating to okhttp3. It doesn't look like the trace can be caught from inside our application code. Perhaps this worker process inside OkHttp for DNS resolution needs the extra check. A user can change this value at any time if it is in fact a setting hack.
No action to take on this.
android : Android 4.4.4,level 19
2 java.net.InetAddress.lookupHostByName(InetAddress.java:476)
3 ......
4 Caused by:
5 libcore.io.ErrnoException:getaddrinfo failed: EACCES (Permission denied)
6 libcore.io.Posix.getaddrinfo(Native Method)
7 libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
8 java.net.InetAddress.lookupHostByName(InetAddress.java:463)
9 java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
10 java.net.InetAddress.getAllByName(InetAddress.java:214)
11 okhttp3.Dns$1.lookup(Dns.java:39)
12 okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:170)