How to give run time permission for marshmallow for read SMS from inbox in eclipse

前端 未结 3 1464
萌比男神i
萌比男神i 2021-01-17 07:20

I have applied multiple code but it\'s show me checkSelfPermission() and shouldShowRequestPermissionRationale methods not exits, please help me..

I used brodcast rec

3条回答
  •  無奈伤痛
    2021-01-17 07:46

    Use the following method:

         public boolean checkPermissionSMS(final Context context, final String[] PERMISSIONS, final int Requestcode) {
                int currentApiversion = Build.VERSION.SDK_INT;
    
    
                if (currentApiversion >= Build.VERSION_CODES.M) {
                    if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
                        if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_SMS)) {
    
                            AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
                            alertBuilder.setCancelable(true);
                            alertBuilder.setTitle("Permission necessary");
                            alertBuilder.setMessage("Read SMS permission is necessary");
                            alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                   //in fragment
                            requestPermissions(PERMISSIONS,Requestcode);
    
    //in activity
                      ActivityCompact.requestPermissions(YourActivity.this,PERMISSIONS,Requestcode);
                                }
                            });
                            AlertDialog alert = alertBuilder.create();
                            alert.show();
    
                        } else {
    //in fragment
                            requestPermissions(PERMISSIONS,Requestcode);
    
    //in activity
                      ActivityCompact.requestPermissions(YourActivty.this,PERMISSIONS,Requestcode);
                        }
                        return false;
    
                    } else
                        return true;
                } else
                    return true;
    
            }
    
    and then in onrequestPermissionresult:
    
         public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    
                if(requestCode==100)
                {
                    if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED)
                    {
                        //do your functionality
                    }
                }
            }
    

    and call the method like this:

    checkPermissionSMS(context,new String[]{Manifest.permission.READ_SMS},100);
    

    when you request permission like this:

    requestPermissions(PERMISSIONS,Requestcode);
    

    then the method onRequestPermissionResult is searched in the calling Fragment

    when you request permission like this:

    ActivityCompact.requestPermissions(YourActivity.this,PERMISSIONS,Requestcode);
    

    then the method onRequestPermissionREsult is searched in the calling activity.

提交回复
热议问题