问题描述
我的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进行操作:)
您可以浏览官方示例应用here。
,我发现了我的错误。我使用了 httpclient ,但是在O和P版本中,我必须使用 HttpsURLConnection 。