Androidアプリケーションからインターネットにアクセスするには、どのような許可が必要ですか?


596

アプリを実行すると、次の例外が発生します。

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

不足している権限の問題を解決するにはどうすればよいですか?

回答:


1245

インターネットアクセス許可をマニフェストファイルに追加します。

この行を追加する必要があります:

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

AndroidManifest.xmlのアプリケーションタグの外


43
このタグは、アプリケーションタグの前に配置する必要があります。あなたが適用TAGの後に置く場合、それは警告を生成します。
Marek

2
エミュレータを再起動します(これが有効になるには、私が必要でした)。
jcalfee314 2013

問題があります。APKでインターネットにアクセスしたくありません。マニフェストに追加された権限はありませんが、apkをインストールしようとすると、インストール時にそのapkにフルインターネットアクセスが必要であることを通知します。この問題を解決するには?マニフェストに追加された権限はありません。私のapkは完全なインターネットアクセスを必要としません-私はこの許可を無効にしたいと思います。
Altivo、2015

1
@Altivo ../app/build/intermediates/manifests/full/debug/AndroidManifest.xmlでマージされたマニフェストを見てください。ここでは、アプリが使用するすべての権限を確認できます。これは、アプリのマニフェストと使用されたライブラリのマニフェストをマージすることによって形成されます。インターネットとACCESS_NETWORK_STATEの権限が含まれているGoogle Play開発者サービスライブラリを主に使用している必要があります。
2016

116

Google Playの最新リリースでは、Googleは「今日ほとんどのアプリはとにかくそれを必要とする」ので、インターネットの許可を求める必要を取り除きました。ただし、古いバージョンのユーザーの場合は、マニフェストに以下のコードを残すことをお勧めします

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

1
それがそう言っているGoogle文書への参照?
farindk 2014

@farindk最初のメモセクション:support.google.com/googleplay/answer/6014972
Finley Smith

24
あなたがリンクするドキュメントは、Playストアがアプリをインストールするかどうかを尋ねるときにユーザーに表示する権限の主要なリストにインターネット権限を含めない方法について話します。それはしない、使用権限のそのマニフェストのリストにはそうすることを宣言するためにインターネットを使用するアプリは、もはや必要があると言います。あなたはそれを言うことを意味するか、すべてのアプリが暗黙のうちに彼らのマニフェストにそう言わずにインターネットを使うのか?ヤヌシュはに質問から同じアプリ走った場合には、され、今日の携帯電話を、それは考えていない質問が尋ねられたとき、それがなかった道を失敗していますか?
ロブ・ケネディ

2
あなたが参照している場合の許可のドキュメントをあなたはそれが非推奨されていないことがわかります。非推奨の権限とは、使用されていない権限のことで、もう使用されていないためマニフェストに含める必要はありません。未使用の権限は、APIが置き換えられたため、またはAPIが不要になったことが原因である可能性があります。そうそう、あなたはインターネットにアクセスするためにインターネットの許可が必要です。インターネットへの接続に関する基本的なドキュメントでさえ、インターネットの許可が必要であると述べています。
ゾーイ


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環境で...ちょうどここにダーツを投げる...
whyoz

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

これをメインに書いてください

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

これらを使用してください:

<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のコードの下に置くだけです:

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

3

現在のバージョンでは、Androidはインターネットとのやり取りを許可しませんが、古いバージョンを使用するユーザーに役立つ以下のコードを追加できます。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"/>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.