एंड्रॉइड एप्लिकेशन से इंटरनेट एक्सेस करने के लिए मुझे क्या अनुमति चाहिए?


596

मुझे अपना ऐप चलाने के लिए निम्नलिखित अपवाद प्राप्त होते हैं:

java.net.SocketException: Permission denied (maybe missing INTERNET permission)

मैं गुम अनुमति समस्या का समाधान कैसे करूँ?

जवाबों:


1245

अपनी मैनिफ़ेस्ट फ़ाइल में INTERNET अनुमति जोड़ें ।

आपको इस पंक्ति को जोड़ना होगा:

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

अपने AndroidManifest.xml में एप्लिकेशन टैग के बाहर


43
इस टैग को पहले से लागू TAG रखा जाना चाहिए। यदि आप आवेदन TAG के बाद अगर डालते हैं, तो यह एक चेतावनी पैदा करता है।
मारेक

2
एमुलेटर को पुनः प्रारंभ करें (इससे पहले कि यह प्रभावी होगा मेरे लिए आवश्यक था)।
jcalfee314

मुझे समस्या हैं। मुझे अपनी एपीके के लिए इंटरनेट तक पहुँच नहीं चाहिए। प्रकट करने के लिए कोई अनुमति नहीं दी गई, लेकिन अगर मैं एपीके स्थापित करने की कोशिश करता हूं, तो स्थापना मुझे सूचित करें, उस एपीके को पूर्ण इंटरनेट एक्सेस की आवश्यकता है। इस समस्या को हल कैसे करें ? प्रकट करने के लिए कोई अनुमति नहीं जोड़ी गई। मेरी apk को पूर्ण इंटरनेट एक्सेस की आवश्यकता नहीं है - मैं इस अनुमति को अक्षम करना चाहता हूं।
Altivo

1
@Altivo अपने मर्ज किए गए मैनिफ़ेस्ट को ../app/build/intermediates/manifests/full/debug/AndroidManifest.xml में देखें। यहां आपको वे सभी अनुमतियां मिलेंगी, जिनका उपयोग आपका ऐप करता है। यह आपके ऐप के प्रकट होने के साथ-साथ उपयोग किए गए पुस्तकालयों के मैनिफेस्ट को मर्ज करके बनता है। आपने ज्यादातर Google Play Services लाइब्रेरी का उपयोग किया होगा, जिसमें INTERNET और ACCESS_NETWORK_STATE अनुमतियां हैं।
सिड

116

Google Play की नवीनतम रिलीज़ में, Google ने इंटरनेट के लिए अनुमति मांगने की आवश्यकता को हटा दिया क्योंकि "आजकल अधिकांश ऐप्स को इसकी आवश्यकता है"। हालांकि, उन उपयोगकर्ताओं के लिए जिनके पुराने संस्करण हैं, फिर भी आपके प्रकट में नीचे दिए गए कोड को छोड़ने की सिफारिश की गई है

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

1
Google दस्तावेज़ का कोई संदर्भ जहां वह ऐसा कहता है?
farindk

@ पहले नोट अनुभाग को यहां देखें: support.google.com/googleplay/answer/6014972?hl=en
Finley Smith

24
जिस दस्तावेज़ को आप Play Store से कनेक्ट करते हैं, उसके बारे में बातचीत के लिए लिंक की अनुमति की प्राथमिक सूची में इंटरनेट अनुमति को शामिल नहीं किया जाएगा, जो किसी ऐप को स्थापित करने के लिए पूछते समय उपयोगकर्ता को दिखाता है। यह नहीं कहता है कि इंटरनेट का उपयोग करने वाले ऐप को अब यह घोषित करने की आवश्यकता नहीं है कि वह अपने प्रकट अनुमतियों की सूची में ऐसा करता है। आप कहना है कि मतलब है सभी क्षुधा परोक्ष उनके प्रकट होता है में ऐसा कह बिना इंटरनेट का उपयोग करें? यही है, अगर Janusz आज के फोन में सवाल से एक ही ऐप चलाता है, तो सवाल पूछने पर यह उस तरह से विफल नहीं होता जैसा कि उसने किया था?
रोब कैनेडी

2
यदि आप अनुमति डॉक्स का उल्लेख करते हैं, तो आप देखेंगे कि यह पदावनत नहीं है। पदावनत अनुमतियाँ वे अनुमतियाँ हैं जिनका उपयोग नहीं किया जाता है, क्योंकि आपको उनके प्रकट होने की आवश्यकता नहीं है क्योंकि वे अब उपयोग नहीं की जाती हैं। अप्रयुक्त अनुमतियाँ हो सकती हैं क्योंकि एपीआई को बदल दिया गया था, या क्योंकि इसकी अब आवश्यकता नहीं है। तो हाँ, आपको इंटरनेट तक पहुंचने के लिए इंटरनेट की अनुमति की आवश्यकता है। यहां तक ​​कि इंटरनेट से जुड़ने पर बेसिक डॉक्स यह भी बताता है कि इंटरनेट की अनुमति आवश्यक है।
ज़ो


76

बस नीचे की तरह ऊपर लाइन डाल दिया

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.avocats.activeavocats"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="16" />

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >


    <activity
        android:name="com.example.exp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>


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

क्या आप किसी अन्य अनुमतियों के बारे में जानते हैं जो NTLM / Windows प्रमाणीकरण की अनुमति देने की आवश्यकता हो सकती है? विशेष रूप से एक XenMobile वातावरण में ... बस यहां एक डार्ट फेंक रहा है ..
ifoz

12

अगर आप अपने ऐप में इंटरनेट का इस्तेमाल करना चाहते हैं और साथ ही नेटवर्क स्टेट को चेक करते हैं यानी ऐप इंटरनेट से कनेक्ट है तो आपको applicationटैग के बाहर नीचे दिए गए कोड का इस्तेमाल करना होगा ।

इंटरनेट की अनुमति के लिए:

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

एक्सेस नेटवर्क स्थिति के लिए:

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

पूरा कोड:

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="16" />

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >


    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

7

अगर सिर्फ इंटरनेट का उपयोग कर रहे हैं तो उपयोग करें-

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

अगर आपको इंटरनेट की स्थिति मिल रही है तो इसका भी उपयोग करें -

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

आवेदन टैग के ठीक ऊपर।


6

प्रकट में अनुमति जोड़ने के बारे में भूल जाओ इस कोड को एक विधि के रूप में जोड़ें

public static boolean hasPermissions(Context context, String... permissions)
{
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null)
    {
        for (String permission : permissions)
        {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED)
            {
                return false;
            }
        }
    }
    return true;
}

और इसे अपने Main में लिखें

int PERMISSION_ALL = 1;
    String[] PERMISSIONS = {Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_SMS, Manifest.permission.CAMERA};

    if (!hasPermissions(this, PERMISSIONS)) {
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }


3

AndroidManifest में बस नीचे दिया गया कोड डालें:

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

3

वर्तमान संस्करणों के अनुसार, एंड्रॉइड इंटरनेट के साथ बातचीत करने की अनुमति नहीं मांगता है, लेकिन आप नीचे दिए गए कोड को जोड़ सकते हैं जो पुराने संस्करणों का उपयोग करने वाले उपयोगकर्ताओं के लिए मदद करेगा। बस इन्हें AndroidManifest में जोड़ें

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

2

अपने कोड में इंटरनेट अनुमति के लिए अनुरोध करने के लिए आपको इन्हें अपने AndroidManifest.xml फ़ाइल में जोड़ना होगा

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

अधिक विस्तार से जानकारी के लिए गोटो https://developer.android.com/training/basics/network-ops/connecting


1

Google ने नवीनतम संस्करण के लिए इंटरनेट से अनुमति मांगने की आवश्यकता को हटा दिया। फिर भी, अपने कोड में इंटरनेट अनुमति के लिए अनुरोध करने के लिए आपको इन्हें अपने AndroidManifest.xml फ़ाइल में जोड़ना होगा।

<uses-permission android:name="android.permission.INTERNET"/>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.