web-dev-qa-db-ja.com

アプリケーションにマニフェスト権限を追加する方法

AndroidでHttpURLConnectionを使用してファイルをダウンロードすることでHTTPリンクにアクセスしようとしていますが、LogCatにこの警告が表示されます。

WARN/System.err(223):Java.net.SocketException:アクセス許可が拒否されました(インターネットアクセス許可がない可能性があります)

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

372
rob

あなたのLogCatエラーの説明からアクセス権が設定されていないと仮定すると、インターネットにアクセスできる私のAndroidManifest.xmlファイルの私のコンテンツは次のようになります。

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

それ以外は、インターネットからファイルをダウンロードしてもいいでしょう。

822

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

違う

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

_正しい_

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

この問題は起こるかもしれません。 IDEのオートコンプリート機能

56
Marek Sebera

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

その後、エディタの下部にあるPermissionsタブを選択し(Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml)、次にAdd... a Uses Permissionをクリックして右側のドロップダウンから必要な権限を選択するか、必要な権限をコピーして貼り付けます(必要なAndroid.permission.INTERNET権限など)。 。

34
Chris
<?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>
32
Teraiya Mayur

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

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

<application/>タグの下にパーミッションを設定することはできますが、警告が出ます。そのため、<application/>タグ宣言の前に配置するように注意してください。

22
nitesh

Eclipseを使用している場合は、次の手順に従ってください。

1)マニフェストをダブルクリックしてエディタに表示します
2)マニフェストエディタの下のパーミッションタブをクリックしてください。
3)追加ボタンをクリック
4)ダイアログが表示されたらクリックしてください。 (通常はリストの最後の項目)
5)右側の画面に表示されるビューに注目してください。[Android.permission.INTERNET]を選択します。
6)次に一連のOkを保存し、最後に保存します。

お役に立てれば

12
Mathayo

これをAndroidのマニフェストに追加するだけです。

<uses-permission Android:name="Android.permission.INTERNET"/>
7
user2914699

あなたのアプリケーションにインターネットのパーミッションを追加するという点でも興味深いことでしょう。

グーグルはまた、各アプリにインターネットアクセスを許可し、事実上インターネットアクセス許可を削除した。ああ、確かに、Android開発者はまだアプリをまとめるときにインターネットアクセスが欲しいと宣言しなければなりません。ただし、アプリをインストールするときにインターネットアクセス許可がユーザーに表示されなくなり、インターネットにアクセスできない現在のアプリでは、ユーザーに確認せずに自動更新でインターネットにアクセスできるようになりました。

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

肝心なのは、マニフェストファイルにインターネット権限を追加する必要があるということですが、アプリケーションはユーザーに新しい権限を要求せずに更新されます。

4
lenrok258

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

manifest.xmlにパーミッションが追加されています

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

これは 標準のアクセス許可 許可がユーザーに要求されない場合には十分です。しかし、それが危険な許可である場合にのみ明示するために許可を追加するだけでは十分ではありません。 Android doc を参照してください。カメラのように、保存許可。

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

user から許可を得る必要があります。私は RxPermission libraryを使用して許可を求めています。許可を求めるために書かなければならないのは長いコードだからです。

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'
}
3
Khemraj