簡體   English   中英

請求互聯網許可不起作用

[英]requesting internet permission not working

我正在嘗試使用 SDK 26 在我的 android 手機上的 android 應用程序中請求互聯網權限。我嘗試使用AndroidManifest.xml ,我嘗試使用ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.INTERNET }, 1); 我嘗試了不同的請求代碼。 我已經在onCreate和按鈕按下事件中嘗試過這個,但是當我進入應用信息時仍然沒有顯示權限。

我完全迷失了,因為我看不出這行不通的任何理由。 有任何想法嗎? 我還不知道的常見問題?

androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.simplevents">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

權限分為幾個保護級別

有影響第三方應用程序的三個保護級別:正常簽名危險權限

INTERNET權限處於正常保護級別,這就是為什么不需要在運行時詢問的原因

在這里查看列表

什么是正常許可和危險許可?

正常

對用戶不敏感和有害的權限,例如。 振動互聯網

危險

在允許READ_CONTACTS之后敏感和有害的權限,該應用程序可能會濫用您的聯系人詳細信息或允許READ_EXTERNAL_STORAGE可以訪問您的 SD 卡數據

您不需要互聯網的特殊許可。

只需在清單中定義權限

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

出於測試目的,您可以檢查您的互聯網連接在 Android 清單文件中添加以下權限。 此權限為您提供 Internet 連接的狀態(狀態)。

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

您可以在此處使用測試代碼檢查您的互聯網連接。 如果 Internet 服務正在工作,isNetwork 函數返回 true,否則返回 false。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main)


        if (isNetwork(getApplicationContext())){

        Toast.makeText(getApplicationContext(), "Internet Connected", Toast.LENGTH_SHORT).show()

        } else {

        Toast.makeText(getApplicationContext(), "Internet Is Not Connected", Toast.LENGTH_SHORT).show()
        }
    }


    public boolean isNetwork(Context context) {

        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }

}

由於其他人已經努力回答這個問題,因此不允許我再刪除此問題,我將向您解釋我的錯誤是什么。 我一直都有訪問互聯網的權限 - 所以我的代碼有一個完全不同的錯誤,我誤解了錯誤消息並認為這是一個權限問題,因為互聯網權限沒有顯示在應用程序信息中屏幕。 它永遠不會,因為這不是“危險”的許可,我學到了很多。

總結:獲得在 android 上建立互聯網連接的權限就像在AndroidManifest.xml添加權限一樣簡單。

普通權限中的Internet權限,此權限由 Android 系統自動允許。

只有 CALL_LOG、SMS 等敏感權限才需要運行時權限。

嘗試這個

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

如果您使用的是移動數據,則只需要 INTERNET 權限,但如果您使用 Wi-Fi 或其他網絡,則需要 ACCESS_NETWORK_STATE 權限,

注意 - 網絡權限不需要運行時權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM