アプリケーションにマニフェスト権限を追加するにはどうすればよいですか?


428

HttpURLConnectionAndroidでHTTPリンクにアクセスしてファイルをダウンロードしようとしていますが、次の警告が表示されLogCatます:

WARN / System.err(223):java.net.SocketException:Permission denied(おそらく欠落しているインターネット許可)

android.Manifest.permissionアプリケーションに追加しましたが、それでも同じ例外が発生します。


マニフェストのアクセス許可の内容を貼り付けます。インターネットのアクセス許可を付与しましたか?
Anthony Forloney、2010年

import android.Manifest.permission;を追加しました。アプリに他に何もありません。アクセス許可を付与するために他に追加する必要があるもの
rob

2
以下の私の答えを見て、それが役立つかどうかimport android.Manifest.permissionを確認してください
。AndroidManifest.xml

回答:


935

LogCatエラーの説明から権限を設定していない場合AndroidManifest.xml、インターネットにアクセスできるファイルの内容は次のとおりです。

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

それ以外は、インターネットからファイルをダウンロードしても問題ありません。


3
質問を解決する、または役立つと思われる回答を見つけた場合、「回答済み」または賛成票として選択すると便利です。これは、同じ問題に遭遇した人のためにコミュニティを支援するのに役立ちます。それはこの質問だけでなく、あなたが尋ねた他の質問にも
当てはまり

私はそれについて知らなかった、これが私の問題を解決するかどうか確かにそうする
rob

何か違うことに遭遇した場合は報告してください。喜んでお手伝いさせていただきます。
Anthony Forloney、2010年

1
私の場合、マニフェストステートメントの後の非常に最初の行であることを確認する必要がありました。v2.2、APIレベル8、htc g1
slf

1
@dialex私の知る限りでは、の子要素が存在しないuses-permission内部applicationタグのみmanifest
Anthony Forloney 2016年

73

権限名はCASE-SENSITIVEです

誰かが同じ問題で苦労する場合それは大文字と小文字を区別するステートメントであるため、間違った大文字と小文字はアプリケーションが許可を得ないことを意味します。

違う

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

正しい

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

つまり、この問題が発生する可能性があります。IDEのオートコンプリート時


1
ありがとうございました!私のアプリがなぜ機能しなかったのかと思って一日を無駄にしました。私はAndroidスタジオを初めて使用し、この問題は以前はEclipseで発生していませんでした:)
InspiredCoder

1
そして、私はそれらの実際の違い、OMG its Capital小さな ANDROID.PERMISSIONそしてandroid.permission;):p
fWd82


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

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="com.example.towntour.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar" >
    <activity
        android:name="com.photoeffect.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>

</manifest>

34

開発にEclipse ADTプラグインを使用している場合AndroidManifest.xmlは、Androidマニフェストエディターで開きます(AndroidManifest.xmlプロジェクトファイルリストから開くには、デフォルトのアクションにする必要があります)。

その後、Permissionsエディターの下部にあるタブ(Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml)を選択し、Add...a Uses Permissionをクリックして、右側のドロップダウンから目的の権限を選択するか、必要な権限(たとえば、android.permission.INTERNET権限権限ます。


23

次の行をアプリケーションマニフェストファイルにコピーし、<application> タグの前に貼り付けます。

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

<application/>タグの下に権限を配置することは機能しますが、警告が表示されます。したがって、<application/>タグ宣言の前に配置するように注意してください。


このコメントを書いている時点では、それはアプリケーション要素の外側にありますが、マニフェスト内にあります。例:<application> ... </ application> <uses-permission android:name = "android.permission.INTERNET" /> </ manifest>
スティーブスウィンズバーグ2017

12

日食を使用する場合は、次の手順に従ってください

1)マニフェストをダブルクリックしてエディターに表示します
。2)マニフェストエディターの下にある[権限]タブをクリックします
。3)[追加]ボタンをクリックします
。(通常、リストの最後の項目)
5)右側に表示されるビューに注意してください "android.permission.INTERNET"を選択します
6)次に、一連の[OK]をクリックして、最後に保存します。

お役に立てれば


7

私は遅れていますが、答えを完成させたいです。

許可はmanifest.xmlライクに追加されます

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

これは、ユーザーにプロンプ​​トが表示されない標準のアクセス許可には十分です。ただし、危険なアクセス許可である場合は、マニフェストのみにアクセス許可を追加するだけでは不十分です。android docを参照してください。カメラと同様に、ストレージ権限。

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

ユーザーに許可求める必要があります。私は、許可を求めるために広く使用されているライブラリであるRxPermissionライブラリを使用しています。許可を得るために書かなければならないのは長いコードだからです。

RxPermissions rxPermissions = new RxPermissions(this); // where this is an Activity instance // Must be done during an initialization phase like onCreate
rxPermissions
    .request(Manifest.permission.CAMERA)
    .subscribe(granted -> {
        if (granted) { // Always true pre-M
           // I can control the camera now
        } else {
           // Oups permission denied
        }
    });

このライブラリをアプリに追加します

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}

4

これは、アプリケーションにインターネットのアクセス許可を追加する場合にも役立ちます。

また、Googleは各アプリにインターネットアクセスを許可しており、インターネットアクセスの許可を実質的に削除しています。確かに、Android開発者は、アプリをまとめるときにインターネットアクセスが必要であることを宣言する必要があります。しかし、ユーザーはアプリをインストールするときにインターネットアクセス許可を見ることができなくなり、インターネットアクセスを持たない現在のアプリは、プロンプトなしに自動更新でインターネットアクセスを取得できるようになりました。

出典:http : //www.howtogeek.com/190863/androids-app-permissions-were-just-simplified-now-theyre-much-less-secure/

つまり、マニフェストファイルにインターネットアクセス許可を追加する必要がありますが、アプリケーションはユーザーのデバイスで更新され、新しいアクセス許可を求められません。


-1

Androidエミュレーターを介してインターネットにロードまたはアクセスしようとしている間、マニフェストファイルでネットワークとアクセスネットワークの状態の両方を使用する必要があります。

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

.INTERNET権限のみを付与している場合は、インターネットにアクセスできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.