dieser Fehler ist wirklich sehr, sehr seltsam und ich weiß nicht, wie ich ihn reproduzieren und beheben kann, da ich viele Suchen durchgeführt habe, aber nichts war nützlich.
Hier ist der Stacktrace:
Stack Trace
_________________________________
0 Java.lang.RuntimeException: An error occured while executing doInBackground()
1 at Android.os.AsyncTask$3.done(AsyncTask.Java:299)
2 at Java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.Java:273)
3 at Java.util.concurrent.FutureTask.setException(FutureTask.Java:124)
4 at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:307)
5 at Java.util.concurrent.FutureTask.run(FutureTask.Java:137)
6 at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1076)
7 at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:569)
8 at Java.lang.Thread.run(Thread.Java:856)
9 Caused by: Java.lang.SecurityException: Permission denied (missing INTERNET permission?)
10 at Java.net.InetAddress.lookupHostByName(InetAddress.Java:430)
11 at Java.net.InetAddress.getAllByNameImpl(InetAddress.Java:236)
12 at Java.net.InetAddress.getAllByName(InetAddress.Java:214)
13 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:70)
14 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:50)
15 at libcore.net.http.HttpConnection$Address.connect(HttpConnection.Java:340)
16 at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.Java:87)
17 at libcore.net.http.HttpConnection.connect(HttpConnection.Java:128)
18 at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.Java:316)
19 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.Java:461)
20 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.Java:433)
21 at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.Java:290)
22 at libcore.net.http.HttpEngine.sendRequest(HttpEngine.Java:240)
23 at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.Java:292)
24 at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.Java:185)
25 at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.Java:271)
26 at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.Java:1143)
27 at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.Java:982)
28 at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.Java:211)
29 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:28)
30 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:1)
31 at Android.os.AsyncTask$2.call(AsyncTask.Java:287)
32 at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:305)
33 ... 4 more
34 Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
35 at libcore.io.Posix.getaddrinfo(Native Method)
36 at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.Java:55)
37 at Java.net.InetAddress.lookupHostByName(InetAddress.Java:405)
38 ... 26 more
39 Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
40 ... 29 more
41 Java.lang.SecurityException: Permission denied (missing INTERNET permission?)
42 at Java.net.InetAddress.lookupHostByName(InetAddress.Java:430)
43 at Java.net.InetAddress.getAllByNameImpl(InetAddress.Java:236)
44 at Java.net.InetAddress.getAllByName(InetAddress.Java:214)
45 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:70)
46 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:50)
47 at libcore.net.http.HttpConnection$Address.connect(HttpConnection.Java:340)
48 at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.Java:87)
49 at libcore.net.http.HttpConnection.connect(HttpConnection.Java:128)
50 at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.Java:316)
51 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.Java:461)
52 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.Java:433)
53 at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.Java:290)
54 at libcore.net.http.HttpEngine.sendRequest(HttpEngine.Java:240)
55 at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.Java:292)
56 at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.Java:185)
57 at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.Java:271)
58 at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.Java:1143)
59 at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.Java:982)
60 at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.Java:211)
61 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:28)
62 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:1)
63 at Android.os.AsyncTask$2.call(AsyncTask.Java:287)
64 at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:305)
65 at Java.util.concurrent.FutureTask.run(FutureTask.Java:137)
66 at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1076)
67 at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:569)
68 at Java.lang.Thread.run(Thread.Java:856)
69 Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
70 at libcore.io.Posix.getaddrinfo(Native Method)
71 at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.Java:55)
72 at Java.net.InetAddress.lookupHostByName(InetAddress.Java:405)
73 ... 26 more
74 Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
75 ... 29 more
76 libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
77 at libcore.io.Posix.getaddrinfo(Native Method)
78 at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.Java:55)
79 at Java.net.InetAddress.lookupHostByName(InetAddress.Java:405)
80 at Java.net.InetAddress.getAllByNameImpl(InetAddress.Java:236)
81 at Java.net.InetAddress.getAllByName(InetAddress.Java:214)
82 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:70)
83 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:50)
84 at libcore.net.http.HttpConnection$Address.connect(HttpConnection.Java:340)
85 at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.Java:87)
86 at libcore.net.http.HttpConnection.connect(HttpConnection.Java:128)
87 at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.Java:316)
88 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.Java:461)
89 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.Java:433)
90 at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.Java:290)
91 at libcore.net.http.HttpEngine.sendRequest(HttpEngine.Java:240)
92 at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.Java:292)
93 at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.Java:185)
94 at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.Java:271)
95 at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.Java:1143)
96 at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.Java:982)
97 at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.Java:211)
98 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:28)
99 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:1)
100 at Android.os.AsyncTask$2.call(AsyncTask.Java:287)
101 at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:305)
102 at Java.util.concurrent.FutureTask.run(FutureTask.Java:137)
103 at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1076)
104 at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:569)
105 at Java.lang.Thread.run(Thread.Java:856)
106 Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
107 ... 29 more
108 libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
109 at libcore.io.Posix.getaddrinfo(Native Method)
110 at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.Java:55)
111 at Java.net.InetAddress.lookupHostByName(InetAddress.Java:405)
112 at Java.net.InetAddress.getAllByNameImpl(InetAddress.Java:236)
113 at Java.net.InetAddress.getAllByName(InetAddress.Java:214)
114 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:70)
115 at libcore.net.http.HttpConnection.<init>(HttpConnection.Java:50)
116 at libcore.net.http.HttpConnection$Address.connect(HttpConnection.Java:340)
117 at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.Java:87)
118 at libcore.net.http.HttpConnection.connect(HttpConnection.Java:128)
119 at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.Java:316)
120 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.Java:461)
121 at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.Java:433)
122 at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.Java:290)
123 at libcore.net.http.HttpEngine.sendRequest(HttpEngine.Java:240)
124 at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.Java:292)
125 at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.Java:185)
126 at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.Java:271)
127 at com.designfuture.music.api.MusixMatchApi.sendRequestJSON(MusixMatchApi.Java:1143)
128 at com.designfuture.music.api.MusixMatchApi.handleRequestJSON(MusixMatchApi.Java:982)
129 at com.designfuture.music.api.MusixMatchApi.getConfig(MusixMatchApi.Java:211)
130 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:28)
131 at com.designfuture.music.asynctask.GetConfigAsyncTask.doInBackground(GetConfigAsyncTask.Java:1)
132 at Android.os.AsyncTask$2.call(AsyncTask.Java:287)
133 at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:305)
134 at Java.util.concurrent.FutureTask.run(FutureTask.Java:137)
135 at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1076)
136 at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:569)
137 at Java.lang.Thread.run(Thread.Java:856)
Hier ist meine AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="my_app_package"
Android:installLocation="auto"
Android:versionCode="my_version_code"
Android:versionName="my_version_name" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="16" />
<supports-screens
Android:anyDensity="true"
Android:largeScreens="true"
Android:normalScreens="true"
Android:resizeable="true"
Android:smallScreens="true"
Android:xlargeScreens="true" />
<uses-feature Android:glEsVersion="0x00010001" />
<uses-permission Android:name="Android.permission.INTERNET" />
<application
Android:allowTaskReparenting="true"
Android:debuggable="true"
Android:icon="@drawable/mxm_icon"
Android:label="@string/musicbrowserlabel"
Android:theme="@style/Theme.Music" >
<!-- MY ACTIVITIES -->
</application>
</manifest>
Bitte frage mich nicht, ob ich die korrekte INTERNET-Erlaubnis in meinem Manifest habe, da diese App seit 2 Jahren auf dem Markt ist: P
Ich habe auch bemerkt, dass (von Crittercism) alle Fehler von Android 4.1.x (JB) stammen. Ich weiß nicht, ob das Gerät verwurzelt ist oder was (ich kann diese Informationen momentan nicht sehen)
ANMERKUNG: Ich habe diese Antwort im Juni 2013 geschrieben, daher ist sie jetzt etwas veraltet. Einige Dinge haben sich in Android seit Version 6 (Marshmallow) der Plattform geändert, wodurch das gesamte Problem heutzutage mehr oder weniger veraltet ist. Ich bin jedoch der Meinung, dass dieser Beitrag als allgemeines Beispiel für die Problemanalyse noch lesenswert ist, und hoffe, dass Sie ihn dennoch als lehrreich empfinden.
Eine Ausnahme, die Sie erhalten (SecurityException: Permission denied (missing INTERNET permission?)
), weist eindeutig darauf hin, dass Sie kein Netzwerk betreiben dürfen. Das ist eine ziemlich unbestreitbare Tatsache. Aber wie kann das passieren? Normalerweise liegt es entweder daran, dass der Eintrag <uses-permission Android:name="Android.permission.INTERNET" />
in Ihrer AndroidManifest.xml
-Datei fehlt, oder, da die Internet-Erlaubnis bei der Installation nicht zur Laufzeit erteilt wird, dass ein langjähriger Fehler im Android -Framework übersehen wurde Bewirkt, dass Ihre App erfolgreich installiert wird, jedoch ohne die erwartete Erlaubnis.
Mein Manifest ist korrekt. Wie kann das passieren?
Theoretisch erfüllt das Vorhandensein von uses-permission
in Manifest die Anforderung perfekt und ist vom Standpunkt des Entwicklers aus alles, was getan werden muss, um in der Lage zu sein, Netzwerke aufzubauen. Da dem Benutzer während der Installation Berechtigungen angezeigt werden, bedeutet die Tatsache, dass Ihre App auf dem Gerät des Benutzers installiert wurde, dass er die von Ihnen angeforderten Berechtigungen erteilt hat (andernfalls wird die Installation abgebrochen). Wenn Ihr Code ausgeführt wird, gelten also alle angeforderten Berechtigungen gewährt ist gültig. Und sobald dies gewährt wurde, kann der Benutzer die Erlaubnis nicht widerrufen, außer die App vollständig zu deinstallieren, da das Standard-Framework Android (von AOSP) derzeit keine solche Funktion bietet.
Die Dinge werden jedoch schwieriger, wenn es Ihnen auch nichts ausmacht, dass Ihre App auch auf rooted Geräten ausgeführt wird. In Google Play sind Tools verfügbar, die Ihre Nutzer installieren können, um die Berechtigungen für installierte Apps zu steuern zur Laufzeit - zum Beispiel: Berechtigungen verweigert und andere. Dies kann auch mit CyanogenMod , Herstellermarke (d. H. LG) oder andere benutzerdefinierte ROM erfolgen, die verschiedene Arten von "Datenschutzmanagern" oder ähnlichen Tools enthalten.
Wenn also eine App in irgendeiner Weise blockiert wird, wird sie grundsätzlich absichtlich vom Benutzer blockiert, und wenn ja, ist dies in diesem Fall ein wirklich größeres Benutzerproblem (oder er/sie versteht nicht, was bestimmte Optionen/Tools wirklich tun und welche Konsequenzen dies haben würde). als Ihre, weil Standard-SDK (und die meisten Apps sind mit diesem SDK geschrieben) einfach nicht so verhält. Also ich stark bezweifle, dass dieses Problem auf "normalen", nicht gerooteten Geräten mit Standard-ROM (oder einem Hersteller wie Samsung, HTC, Sony usw.) auftritt.
Ich will nicht abstürzen ...
Eine ordnungsgemäß implementierte Berechtigungsverwaltung und/oder -sperrung muss sich mit der Tatsache befassen, dass die meisten Apps möglicherweise nicht für den Fall bereit sind, dass der Zugriff auf bestimmte Funktionen gewährt wird und gleichzeitig nicht möglich ist, da dies ein Widerspruch ist, für den die App Manifest to verwendet Fordern Sie den Zugriff zum Zeitpunkt der Installation an. Richtig durchgeführte Zugriffskontrolle muss dazu führen, dass alle Funktionen wie zuvor ausgeführt werden, und die Verwendbarkeit mithilfe von Techniken, die dem erwarteten Verhalten der Funktion entsprechen, weiterhin eingeschränkt werden. Wenn beispielsweise eine bestimmte Berechtigung erteilt wurde (z. B. GPS, Internetzugang), kann diese Funktion aus Sicht der App/Benutzer verfügbar gemacht werden (z. B. können Sie GPS einschalten oder versuchen, eine Verbindung herzustellen), kann die geänderte Implementierung keine realen Daten bereitstellen. Dh GPS kann immer keine Koordinaten zurückgeben, wie wenn Sie drinnen sind oder keinen Satelliten "fix" haben. Der Internetzugang kann wie bisher gewährt werden, Sie können jedoch keine erfolgreiche Verbindung herstellen, da keine Datenübertragung oder Weiterleitung erfolgt. Solche Szenarien sollten auch im normalen Gebrauch erwartet werden, daher sollten sie bereits von den Apps behandelt werden. Da dies im normalen Alltagsbetrieb einfach passieren kann, sollte ein Absturz in einer solchen Situation höchstwahrscheinlich mit Anwendungsfehlern zusammenhängen.
Uns fehlen zu viele Informationen über die Umgebung, in der dieses Problem auftritt, um das Problem ohne Vermutung zu diagnostizieren. Als Lösung können Sie jedoch die Verwendung von setDefaultUncaughtExceptionHandler () in Betracht ziehen, um solche unerwarteten Ausnahmen in Zukunft und beispielsweise auf einfache Weise abzufangen Zeigen Sie dem Benutzer detaillierte Informationen darüber an, welche Berechtigung Ihre App benötigt, anstatt nur abzustürzen. Bitte beachten Sie, dass dies höchstwahrscheinlich zu Konflikten mit Tools wie Crittercism, ACRA und anderen führt. Seien Sie also vorsichtig, wenn Sie eines dieser Tools verwenden.
Notizen
Bitte beachten Sie, dass Android.permission.INTERNET
nicht die einzige Berechtigung für das Netzwerk ist, die Sie möglicherweise im Manifest deklarieren müssen, um das Netzwerk erfolgreich zu betreiben. Wenn die Berechtigung INTERNET
erteilt wird, können Anwendungen einfach Netzwerk-Sockets öffnen (was im Grunde eine Grundvoraussetzung für jede Netzwerk-Datenübertragung ist). Wenn Ihr Netzwerkstapel/Ihre Netzwerkbibliothek aber auch Informationen über Netzwerke erhalten möchte, benötigen Sie in Ihrem Manifest auch Android.permission.ACCESS_NETWORK_STATE
(was z. B. von HttpUrlConnection client ( see Tutorial ).
Nachtrag (16.07.2015)
Bitte beachten Sie, dass Android 6 (auch bekannt als Marshmallow) einen völlig neuen Berechtigungsverwaltungsmechanismus namens Runtime Permissions eingeführt hat. Sie gibt dem Benutzer mehr Kontrolle darüber, welche Berechtigungen gewährt werden (erlaubt auch selektives Gewähren) oder lässt einen bereits erteilten Berechtigungen widerrufen, ohne dass eine App entfernt werden muss:
Dies führt ein neues [...] Berechtigungsmodell ein, mit dem Benutzer App-Berechtigungen jetzt zur Laufzeit direkt verwalten können. Mit diesem Modell können Benutzer die Transparenz und Kontrolle über Berechtigungen verbessern und gleichzeitig die Installations- und Auto-Update-Prozesse für App-Entwickler optimieren. Benutzer können Berechtigungen für installierte Apps einzeln erteilen oder entziehen.
Die Änderungen wirken sich jedoch nicht auf die Berechtigungen INTERNET
oder ACCESS_NETWORK_STATE
aus, die als "normale" Berechtigungen gelten. Der Benutzer muss diese Berechtigung nicht explizit erteilen.
Weitere Informationen finden Sie auf der Seite Beschreibung der Verhaltensänderungen und stellen Sie sicher, dass sich Ihre App auch auf neueren Systemen korrekt verhält. Es ist besonders wichtig, wenn Ihr Projekt targetSdk
auf mindestens 23
eingestellt hat, da Sie dann muss ein neues Berechtigungsmodell unterstützen ( ausführliche Dokumentation ). Wenn Sie nicht bereit sind, stellen Sie sicher, dass Sie targetSdk
bis höchstens 22
beibehalten, da dies sicherstellt, dass auch neue Android das alte Berechtigungssystem verwenden, wenn Ihre App installiert wird.
Android Studio 1.3b1 (nicht sicher, ob andere Versionen verfügbar sind) hat meine Internet-Berechtigung für Android.PERMISSION.INTERNET
automatisch abgeschlossen. Das Ändern in Android.permission.INTERNET
hat das Problem behoben.
Stellen Sie sicher, dass der Ort, an dem Sie hinzufügen
<uses-permission Android:name="Android.permission.INTERNET"/>
ist richtig.
Sie sollten es so in AndroidManifest.xml schreiben:
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.project">
<uses-permission Android:name="Android.permission.INTERNET"/>
Mach meine Fehler nicht :)
Fügen Sie der Manifestdatei die Zeile hinzu:
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
Es hat es für mich behoben.
Ich habe diesen Fehler behoben, ich habe versehentlich Berechtigungen innerhalb des Anwendungstags hinzugefügt. Ich habe draußen geputtet und es funktioniert gut. Ich hoffe es hilft für jemanden.
Ich hatte auch dieses Problem. Es war seltsam, dass es mit meinem Lollipop-Emulator funktionierte, aber nicht mit meinem KitKat-Gerät.
Android Studio zwingt Sie jetzt, die Erlaubnis in Großbuchstaben zu schreiben, und das ist das Problem.
Hinzufügen
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
Über der Anwendungsregisterkarte wird es funktionieren.
Schreiben Sie Ihre Erlaubnis vor dem Anwendungstag wie unten angegeben.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.someapp.sample">
<uses-permission Android:name="Android.permission.INTERNET"/>
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme">
Setzen Sie diese Berechtigung außerhalb des <application>
-Tags vor dem Tag. Ich habe es versucht und es funktioniert für mich.
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
wenn es sich um eine IPv6-Adresse handelt, schauen Sie sich Folgendes an: https://code.google.com/p/Android/issues/detail?id=33046
Anscheinend gab es einen Fehler in Android, der in 4.3 (?) Behoben wurde.
Genau wie Tom es erwähnt hat. Wenn Sie mit capital A
beginnen, vervollständigt autocomplete es als.
Android.PERMISSION.INTERNET
Wenn Sie mit der Eingabe von a
beginnen, wird die automatische Vervollständigung als abgeschlossen
Android.permission.INTERNET
Der zweite ist der richtige.
Nun, es ist eine sehr verwirrende Art von Fehler. Es kann viele Gründe geben:
Ich verbringe Stunden damit, nach einer Lösung für dieses Problem zu suchen, und keine der Lösungen in den Antworten funktionierte. Dann fand ich heraus, dass ich während der automatischen Vervollständigung versehentlich ein Leerzeichen zwischen Android.permission.INTERNET
und "
eingefügt habe.