1
votes

L'appel de startActivity () depuis l'extérieur d'un contexte d'activité nécessite l'indicateur FLAG_ACTIVITY_NEW_TASK? bibliothèque nabinbhandari / Android-Permissions

Lors de l'utilisation de

Bibliothèque nabinbhandari / Android-Permissions: Lien

Obtenir une erreur lorsque j'exécute l'application sur un appareil Android Niveau d'API> 20

Il s'agit d'une classe de non-activité. MainApp.getmContext () renvoie le contexte de l'application:

String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
    Permissions.check(MainApp.getmContext(), permissions, null/*rationale*/, null/*options*/, new PermissionHandler() {
        @Override
        public void onGranted() {
            // do your task.
            Toast.makeText(MainApp.getmContext(), "Granted", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onDenied(Context context, ArrayList<String> deniedPermissions) {
            Toast.makeText(MainApp.getmContext(), "Denied", Toast.LENGTH_SHORT).show();
        }
    });

L'erreur arrive sur la ligne Permissions.check .


0 commentaires

3 Réponses :


1
votes

Je pense que c'est à cause de votre MainApp.getmContext. C'est en fait le contexte de l'application. Vous avez besoin d'un contexte d'activité.


3 commentaires

Merci pour le commentaire. Au fur et à mesure, j'obtenais le contexte via la classe étendue Application. Mais après avoir passé le contexte d'activité, cela fonctionne.


Comment puis-je obtenir le contexte de l'activité par programme, comme je ne veux pas que l'utilisateur puisse définir le contexte. Comme, je travaille sur la bibliothèque et sur cette perspective, je ne veux pas que l'utilisateur puisse définir le contexte lui-même.


@AliAzazAlam Je ne comprends pas la question.



2
votes

Nous devons transmettre l'activité [sur laquelle vous souhaitez afficher les autorisations] Contexte dans l'argument d'autorisation:

public static void permissionGrant(Context mContext){
    String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
    Permissions.check(mContext, permissions, null/*rationale*/, null/*options*/, new PermissionHandler() {
        @Override
        public void onGranted() {
            // do your task.
            Toast.makeText(MainApp.getmContext(), "Granted", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onDenied(Context context, ArrayList<String> deniedPermissions) {
            Toast.makeText(MainApp.getmContext(), "Denied", Toast.LENGTH_SHORT).show();
        }
    });
}


0 commentaires

0
votes

Sur certains appareils, lors du démarrage d'une nouvelle activité à partir du contexte de service, il est nécessaire d'utiliser Intent.FLAG_ACTIVITY_NEW_TASK dans Intent . Pour ce faire, utilisez l'objet suivant comme paramètre options .

Options options = new Options().setCreateNewTask();

Pour plus d'informations, consultez ce problème et cette demande d'extraction.


0 commentaires