Izin apa yang saya perlukan untuk mengakses Internet dari aplikasi Android?

596

Saya mendapatkan Pengecualian berikut menjalankan aplikasi saya:

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

Bagaimana cara saya mengatasi masalah izin yang hilang?

Janusz
sumber

Jawaban:

1245

Tambahkan izin INTERNET ke file manifes Anda.

Anda harus menambahkan baris ini:

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

di luar tag aplikasi di AndroidManifest.xml Anda

mhsmith
sumber
43
Tag ini harus ditempatkan SEBELUM TAG aplikasi. Jika Anda memasukkan jika setelah aplikasi TAG, itu menghasilkan peringatan.
Marek
2
Nyalakan kembali Emulator (diperlukan untuk saya sebelum ini berlaku).
jcalfee314
Saya punya masalah. Saya tidak ingin akses ke internet untuk apk saya. Tidak ada izin yang ditambahkan ke manifes, tetapi jika saya mencoba menginstal apk, instal informasikan kepada saya, apk itu perlu AKSES INTERNET LENGKAP. Bagaimana cara mengatasi masalah ini? tidak ada izin yang ditambahkan ke manifes. Apk saya tidak diperlukan akses internet penuh - saya ingin menonaktifkan izin ini.
Altivo
1
@Altivo Lihat manifes gabungan Anda di ../app/build/intermediates/manifests/full/debug/AndroidManifest.xml. Di sini Anda akan menemukan semua izin yang digunakan aplikasi Anda. Ini dibentuk dengan menggabungkan manifes aplikasi Anda serta manifes perpustakaan yang digunakan. Anda harus sebagian besar menggunakan perpustakaan layanan google play, yang berisi izin INTERNET dan ACCESS_NETWORK_STATE.
Sid
116

Dalam rilis terbaru Google Play, Google menghapus kebutuhan untuk meminta izin untuk internet karena "sebagian besar aplikasi memerlukannya saat ini". Namun, untuk pengguna yang memiliki versi yang lebih lama, masih disarankan untuk meninggalkan kode di bawah dalam manifes Anda

<uses-permission android:name="android.permission.INTERNET" /> 
Finley Smith
sumber
1
Adakah referensi ke dokumen Google di mana dikatakan demikian?
farindk
@farindk bagian catatan pertama di sini: support.google.com/googleplay/answer/6014972?hl=id
Finley Smith
24
Dokumen yang Anda tautkan ke pembicaraan tentang bagaimana Play Store tidak akan memasukkan izin Internet dalam daftar izin utama yang ditampilkannya kepada pengguna saat menanyakan apakah akan memasang aplikasi. Itu tidak mengatakan bahwa aplikasi yang menggunakan Internet tidak perlu lagi menyatakan bahwa ia melakukannya dalam daftar izin yang digunakan manifes. Apakah Anda bermaksud mengatakan bahwa semua aplikasi secara implisit menggunakan Internet tanpa mengatakannya dalam manifesnya? Artinya, jika Janusz menjalankan aplikasi yang sama dari pertanyaan di ponsel hari ini , itu tidak akan gagal seperti ketika pertanyaan diajukan?
Rob Kennedy
2
Jika Anda merujuk dokumen izin Anda akan melihat bahwa itu tidak usang. Izin usang adalah izin yang tidak digunakan, yang tidak perlu Anda miliki dalam manifes karena tidak digunakan lagi. Izin yang tidak digunakan bisa karena API diganti, atau karena tidak diperlukan lagi. Jadi ya, Anda memerlukan izin internet untuk mengakses internet. Bahkan dokumen dasar tentang koneksi ke internet juga menyatakan bahwa izin internet diperlukan.
Zoe
76

cukup letakkan baris di atas seperti di bawah ini

<?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>

Kirtikumar A.
sumber
42
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
AndroidDev
sumber
apakah Anda mengetahui izin lain yang mungkin diperlukan untuk mengizinkan Otentikasi NTLM / Windows? Terutama di lingkungan XenMobile ... hanya melempar panah di sini ..
whyoz
12

Jika Anda ingin menggunakan Internet di aplikasi Anda dan juga memeriksa status jaringan yaitu apakah aplikasi terhubung ke internet maka Anda harus menggunakan kode di bawah ini di luar applicationtag.

Untuk Izin Internet:

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

Untuk status jaringan Akses:

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

Kode Lengkap:

<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>
Amy
sumber
7

jika hanya menggunakan internet maka gunakan-

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

jika Anda mendapatkan status internet maka gunakan juga -

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

tepat di atas tag aplikasi.

Akshay Paliwal
sumber
6

lupakan tentang menambahkan izin ke manifes Tambahkan kode ini sebagai metode

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

dan tulis ini di Main Anda

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);
    }
Vaibhav Joshi
sumber
4

Gunakan ini:

<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" />
Olorunfemi Ajibulu
sumber
3

Masukkan saja kode di bawah ini di AndroidManifest:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Hiren Gondaliya
sumber
3

Sesuai versi saat ini, Android tidak meminta izin untuk berinteraksi dengan internet tetapi Anda dapat menambahkan kode di bawah ini yang akan membantu pengguna menggunakan versi yang lebih lama. Cukup tambahkan ini di AndroidManifest

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Kashif Faraz Shamsi
sumber
1

Google menghapus kebutuhan untuk meminta izin untuk internet untuk versi terbaru. Namun, untuk meminta izin internet dalam kode Anda, Anda harus menambahkan ini ke file AndroidManifest.xml Anda.

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