2
votes

demande d'autorisation Internet ne fonctionne pas

J'essaie de demander l'autorisation Internet dans mon application Android sur mon téléphone Android à l'aide du SDK 26. J'ai essayé d'utiliser AndroidManifest.xml , j'ai essayé d'utiliser ActivityCompat. requestPermissions (this, new String [] {Manifest.permission.INTERNET}, 1); et j'ai essayé différents codes de requête. J'ai essayé cela dans onCreate et à l'intérieur d'un événement de pression de bouton, mais aucune autorisation n'apparaît lorsque je vais dans les informations sur l'application.

Je suis totalement perdu car je n'en vois aucune raison pour laquelle cela ne fonctionnera pas. des idées? problèmes courants que je ne connais pas encore?

andoidManifest.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>


11 commentaires

Pouvez-vous partager votre code complet et le message logcat.


Vous n'avez pas besoin de demander l'autorisation Internet au moment de l'exécution, il suffit de la déclarer dans le manifeste. Pourriez-vous s'il vous plaît publier votre AndroidManifest.xml ?


l'autorisation Internet est une autorisation normale et non dangereuse, vous n'avez pas besoin de la demander par programme, ajoutez-la simplement dans le manifeste


@NovoLucas il n'y a pas d'erreur, alors que voulez-vous exactement du logcat?


@lelloman Je l'ai ajouté à l'article, je ne vois rien de mal.


@Quicklearner Je me fiche du dialogue, je veux juste qu'il fonctionne. Aucune autorisation n'apparaît sur l'écran Informations sur l'application, donc cela ne fonctionne pas ou ai-je tort?


ajoutez simplement ceci dans Manifest, cela suffit


@Quicklearner avez-vous même regardé mon message


L'autorisation Internet est une autorisation normale et elle ne s'affiche jamais dans les informations de l'application. Une simple déclaration dans le fichier manifeste suffit. Et le popup d'autorisation n'affiche pas non plus le système bcoz autorise l'autorisation par défaut.


Le maifest semble correct, alors quel est votre problème?


@lelloman Je suppose que quelque chose d'autre était le problème, mais Android vient de me dire qu'il ne pouvait pas exécuter le gestionnaire de boutons, rien de plus. J'ai supposé que c'était l'autorisation Internet, car elle n'apparaîtrait pas sur l'écran des informations de l'application -> autorisations. et maintenant je ne peux pas supprimer la question parce que d'autres personnes ont déjà mis tellement d'efforts pour y répondre (non sérieusement, c'est pourquoi stackoverflow ne me laisse pas la supprimer)


4 Réponses :


4
votes

Les autorisations sont divisées en plusieurs niveaux de protection

Il existe trois niveaux de protection qui affectent les applications tierces: autorisations normales , signature et dangereuses

L'autorisation INTERNET est au niveau de protection normale et c'est pourquoi il n'est pas nécessaire de la demander au moment de l'exécution

voir la liste ici

Qu'est-ce qu'une autorisation normale et dangereuse ?

Normal :

Les autorisations qui ne sont pas sensibles et nuisibles aux utilisateurs, par exemple. comme VIBRATE et INTERNET

Dangereux :

Les autorisations qui sont sensibles et nuisibles, comme après avoir autorisé READ_CONTACTS , l'application peut abuser des détails de vos contacts ou permettre à READ_EXTERNAL_STORAGE d'accéder aux données de votre carte SD


0 commentaires

0
votes

Internet Autorisation en autorisation normale, cette autorisation est automatiquement autorisée par le système Android.

Seules les autorisations sensibles telles que CALL_LOG, SMS, etc. ont besoin d'une autorisation d'exécution.

Essayez ceci

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

Si vous utilisez des données mobiles, vous n'avez besoin que d'une autorisation INTERNET mais si vous utilisez le Wi-Fi ou un autre réseau, vous avez besoin de l'autorisation ACCESS_NETWORK_STATE,

Remarque - L'autorisation réseau n'est pas nécessaire lors de l'exécution.


0 commentaires

2
votes

Vous n'avez pas besoin d'une autorisation spéciale pour Internet.

Définissez simplement l'autorisation dans le manifeste

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;
    }

}

à des fins de test, vous pouvez vérifier votre connexion Internet et ajouter ci-dessous l'autorisation dans le fichier manifeste Android. Cette autorisation vous donne l'état (statut) de votre connexion Internet.

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

Ici, testez le code que vous pouvez utiliser pour vérifier votre connexion Internet. La fonction isNetwork renvoie true si le service Internet fonctionne, sinon elle renvoie false.

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


0 commentaires

2
votes

Comme je ne suis plus autorisé à supprimer cette question parce que d'autres personnes ont déjà fait des efforts pour y répondre, je vais vous expliquer quelle a été mon erreur. J'ai eu la permission d'accéder à Internet tout le temps - j'ai donc eu une erreur complètement différente dans mon code, et j'ai mal interprété le message d'erreur et j'ai pensé que c'était une autorisation, car l'autorisation Internet ne s'affiche pas sur les informations de l'application écran. Cela ne le fait jamais, car ce n'est pas une permission «dangereuse», j'ai beaucoup appris.

Pour résumer: obtenir l'autorisation d'établir une connexion à Internet sur Android est aussi simple que d'ajouter l'autorisation dans AndroidManifest.xml .


0 commentaires