首页 文章

如何向应用程序添加清单权限?

提问于
浏览
360

我试图在Android中使用 HttpURLConnection 访问HTTP链接以下载文件,但我在 LogCat 中收到此警告:

WARN / System.err(223):java.net.SocketException:权限被拒绝(可能缺少INTERNET权限)

我已将android.Manifest.permission添加到我的应用程序中,但它仍然提供相同的异常 .

9 回答

  • 11

    假设您没有从 LogCat 错误描述中设置权限,这里是我的 AndroidMainfest.xml 文件的内容,可以访问互联网:

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

    除此之外,您可以从互联网上下载文件 .

  • 20

    如果有人会遇到同样的问题,那么错误的情况意味着你的申请将无法获得许可 .

    WRONG

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

    CORRECT

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

    这个问题可能会发生,即 . 在IDE中自动完成

  • 7

    如果您正在使用Eclipse ADT插件进行开发,请在Android Manifest Editor中打开 AndroidManifest.xml (应该是从项目文件列表中打开 AndroidManifest.xml 的默认操作) .

    然后,选择编辑器底部的 Permissions 选项卡( Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml ),然后单击 Add... a Uses Permission 并从右侧的下拉列表中选择所需的权限,或者只需复制必要的权限(例如您需要的 android.permission.INTERNET 权限) .

  • 33
    <?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>
    
  • 797

    将以下行复制到应用程序清单文件并粘贴到 <application> 标记之前 .

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

    将权限放在 <application/> 标记下面会有效,但会给你警告 . 因此,请务必将其放在 <application/> 标签声明之前 .

  • 30

    使用eclipse时,请按照以下步骤操作

    1)双击清单以在编辑器上显示它
    2)单击清单编辑器下方的“权限”选项卡
    3)单击“添加”按钮
    4)在出现的对话框上单击使用权限 . (通常是列表中的最后一项)
    5)注意出现在rigth侧的视图选择"android.permission.INTERNET"
    6)然后一系列好的,最后保存 .

    希望这可以帮助

  • 4

    只需将此添加到您的Android清单:

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

    在为您的应用程序添加INTERNET权限的上下文中,这可能也很有趣:

    Google还为每个应用程序提供了Internet访问权限,有效地删除了Internet访问权限 . 哦,当然,Android开发人员仍然必须在组合应用程序时声明他们想要访问Internet . 但是,用户在安装应用程序时无法再看到Internet访问权限,并且当前无法访问Internet的应用程序现在可以通过自动更新获得Internet访问权限,而不会提示您 .

    资料来源:http://www.howtogeek.com/190863/androids-app-permissions-were-just-simplified-now-theyre-much-less-secure/

    最重要的是,您仍然需要在清单文件中添加INTERNET权限,但应用程序将在用户的设备上更新,而不会要求他们获得新的权限 .

  • 1

    我迟到但我想完成答案 .

    manifest.xml 中添加了权限

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

    虽然如果它是一个危险的权限,它是不足以添加清单的权限 . 见android doc . 像相机,存储权限 .

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

    你需要ask permission from user . 我使用广泛使用的库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'
    }
    

相关问题