Bir Android uygulamasından İnternet'e erişmek için hangi izne ihtiyacım var?


596

Uygulamamı çalıştırırken aşağıdaki İstisna'yı alıyorum:

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

Eksik izin sorununu nasıl çözerim?

Yanıtlar:


1245

Ekle İNTERNET Manifest'inizde dosyaya izin.

Bu satırı eklemelisiniz:

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

AndroidManifest.xml dosyasındaki uygulama etiketinin dışında


43
Bu etiket, uygulama Etiketinden ÖNCE yerleştirilmelidir. Eğer uygulamadan sonra TAG koyarsanız, bir uyarı oluşturur.
Marek

2
Öykünücüyü yeniden başlatın (bunun etkili olması için benim için gerekliydi).
jcalfee314

Bir sorunum var. APK'm için internete erişmek istemiyorum. Manifest'e izin verilmiyor, ancak apk yüklemeye çalışırsam, kurulum beni bilgilendirir, bu apk FULL INTERNET ACCESS'e ihtiyaç duyar. Bu problem nasıl çözülür? manifest'e izin eklenmedi. APK'm tam internet erişimi gerektirmiyor - bu izni devre dışı bırakmak istiyorum.
Altivo

1
@Altivo ../app/build/intermediates/manifests/full/debug/AndroidManifest.xml adresindeki birleştirilmiş manifest'inize bakın. Burada uygulamanızın kullandığı tüm izinleri bulacaksınız. Bu, uygulamanızın bildirimini ve kullanılan kitaplıkların bildirimlerini birleştirerek oluşturulur. En çok INTERNET ve ACCESS_NETWORK_STATE izinlerini içeren google play hizmetleri kitaplığını kullanmış olmalısınız.
Sid

116

Google Play'in son sürümünde Google, "günümüzde çoğu uygulama buna ihtiyaç duyduğundan" internet izni isteme ihtiyacını ortadan kaldırdı. Ancak, daha eski sürümleri olan kullanıcılar için, aşağıdaki kodu bildiriminizde bırakmanız önerilir.

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

1
Bir Google dokümanına söylediği herhangi bir referans var mı?
farindk

@farindk buradaki ilk not bölümünü: support.google.com/googleplay/answer/6014972?hl=tr
Finley Smith

24
Bağlantı verdiğiniz belge, Play Store'un, bir uygulamanın yüklenip yüklenmeyeceğini sorarken kullanıcıya görüntülediği birincil izinler listesine Internet iznini nasıl içermeyeceğinden bahseder. O değil İnternet'i artık ihtiyaçlarını kullanan bir uygulamanın kullanılan izinlerin onun en apaçık listesinde yapar beyan etmek demek. Tüm uygulamaların , bildirimlerinde söylemeden interneti dolaylı olarak kullandığını mı söylemek istiyorsun ? Janusz söz aynı uygulamayı ran Yani, eğer bugünün , bu olur telefonları değil soru sorulmuştur çalıştığı gibi başarısız olmuş?
Rob Kennedy

2
İzin belgelerine başvurursanız, onaylanmadığını görürsünüz. Kullanımdan kaldırılmış izinler, artık kullanılmadığı için bildiriminizde olması gerekmeyen, kullanılmayan izinlerdir. Kullanılmayan izinler, API'nin değiştirilmesi veya artık gerekli olmaması nedeniyle olabilir. Yani evet, internete erişmek için internet iznine ihtiyacınız var. İnternete bağlanma ile ilgili temel dokümanlar bile internet izninin gerekli olduğunu belirtir.
Zoe


76

sadece aşağıdaki gibi çizginin üstüne koy

<?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 Kimlik Doğrulaması'na izin vermek için gerekli olabilecek diğer izinleri biliyor musunuz? Özellikle XenMobile ortamında ... sadece .. Burada bir dart atma
whyoz

12

Uygulamanızda İnternet'i kullanmak ve ağ durumunu kontrol etmek istiyorsanız, yani Uygulama internete bağlıysa, applicationetiketin dışında aşağıdaki kodu kullanmanız gerekir .

İnternet İzni için:

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

Access ağ durumu için:

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

Kodun Tamamı:

<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

eğer sadece internet kullanıyorsanız

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

internet durumunu alıyorsanız o zaman da kullanın -

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

uygulama etiketinin hemen üstünde.


6

manifest'e izin eklemeyi unutma Bu kodu yöntem olarak ekle

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;
}

ve bunu Ana Ekranınıza yazın

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);
    }

4

Bunları kullan:

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

3

AndroidManifest'te kodun altına koyun:

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

3

Mevcut sürümlere göre, Android internet ile etkileşim için izin istemiyor, ancak eski sürümleri kullanan kullanıcılara yardımcı olacak aşağıdaki kodu ekleyebilirsiniz.

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


1

Google, en son sürüm için internetten izin isteme ihtiyacını ortadan kaldırdı. Yine de, kodunuzda internet izni istemek için bunları AndroidManifest.xml dosyanıza eklemeniz gerekir.

<uses-permission android:name="android.permission.INTERNET"/>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.