在清单中设置了Android App Permission Internet,但无法使用

问题描述

我的Android应用需要互联网许可。

这是我的清单文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.medshoppro">

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

    <application
        android:name=".application.globalDataStore"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:theme="@style/AppTheme">

        <activity android:name=".activities.Test"></activity>

        <activity
            android:name=".activities.MedShopPro"
            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>

但是,如果我在手机(Pixel 4 XL)上启动我的应用程序,则无法使用Internet。而且我无法通过App-Details-> Permissions授予我的App权限。

缺少什么或做错了什么?

解决方法

您的问题不清楚。 也许这就是您要问的。

如果您的手机使用的API大于23或23,则需要在运行时检查权限。

Android-M,即API 23引入了Runtime Permissions,以减少android设备中的安全漏洞,用户现在可以在运行时直接管理应用程序权限。因此,如果用户拒绝您应用程序的特定权限,则必须获取询问您在查询中提到的权限对话框。

因此,请先检查操作,即检查您是否有权访问资源link,如果您的应用程序没有该特定权限,则可以请求权限link并处理权限请求响应如下所示。

@Override
public void onRequestPermissionsResult(int requestCode,String permissions[],int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled,the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted,yay! Do the
                // contacts-related task you need to do.

               } else {

                // permission denied,boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

另一个示例代码在这里。

if (ContextCompat.checkSelfPermission(context,Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
    if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context,Manifest.permission.WRITE_CALENDAR)) {
        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
        alertBuilder.setCancelable(true);
        alertBuilder.setMessage("Write calendar permission is necessary to write event!!!");
        alertBuilder.setPositiveButton(android.R.string.yes,new DialogInterface.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
            public void onClick(DialogInterface dialog,int which) {
                ActivityCompat.requestPermissions((Activity)context,new String[]{Manifest.permission.WRITE_CALENDAR},MY_PERMISSIONS_REQUEST_WRITE_CALENDAR);
            }
        });
    } else {
        ActivityCompat.requestPermissions((Activity)context,MY_PERMISSIONS_REQUEST_WRITE_CALENDAR);
    }
}

因此,最后,如果您打算使用新版本来避免强制关闭,则最好通过behavior changes进行操作:)

Permissions Best Practices

您可以浏览官方示例应用here

,

我发现了我的错误。我使用了 httpclient ,但是在O和P版本中,我必须使用 HttpsURLConnection

Second issue