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?

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


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" /> 

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>


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

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>

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.


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

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" />

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"/>

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"/>


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"/>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.