我使用以下方法检查网络可用性,但应用程序正在粉碎并且它会抛出异常。
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
它抛出异常,
MainActivity}: java.lang.SecurityException: ConnectivityService: Neither user 10046 nor current process has android.permission.ACCESS_NETWORK_STATE.
但我在manifest.xml文件中给予了许可。
在这里,
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hello.app.cri" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<activity
android:name=".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>
<activity android:name=".MatchAct" >
</activity>
<activity android:name=".Aboutmeh" >
</activity>
</application>
</manifest>
任何形式的帮助将不胜感激。
答案 0 :(得分:1)
您的错误本身就是不言自明的。您没有正确地给予许可。将标记放在标记之外。
答案 1 :(得分:1)
uses-permission标签应该在应用程序标签之外使用。
试试这段代码: -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hello.app.cri" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".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>
<activity android:name=".MatchAct" >
</activity>
<activity android:name=".Aboutmeh" >
</activity>
</application>
希望这可以帮助你:)
答案 2 :(得分:1)
问题是您已在<application>
代码中定义了权限。
您必须在<application>
代码之外定义权限。
E.g。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hello.app.cri" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- Define Permissions Here -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<activity
android:name=".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>
<activity android:name=".MatchAct" />
<activity android:name=".Aboutmeh" />
</application>
</manifest>
答案 3 :(得分:-2)
要访问互联网,我们需要INTERNET权限 要检测网络状态,我们需要您的ACCESS_NETWORK_STATE权限
的AndroidManifest.xml
确保您拥有明确的权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hello.app.cri" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".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>
<activity android:name=".MatchAct" >
</activity>
<activity android:name=".Aboutmeh" >
</activity>
</application>
并确保它们不在应用程序标记之内,但在清单标记内