如何给运行时间许可棉花糖来从eclipse中的收件箱中读取短信 [英] How to give run time permission for marshmallow for read SMS from inbox in eclipse

查看:189
本文介绍了如何给运行时间许可棉花糖来从eclipse中的收件箱中读取短信的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经应用了多个代码,但它显示了我的checkSelfPermission()和shouldShowRequestPermissionRationale方法不退出,请帮助我..



我使用brodcast接收器类阅读短信它是工作正常的果冻豆腐,但不是棉花糖,而不是像冰淇淋,如冰淇淋沙龙,低级版本,我如何使应用程序兼容所有的Android版本,



请指导我一步一步一步,因为我是新的,请给我举例。



听到是我的代码读取短信许可..

  public void getpermission(){


//这里,thisActivity是当前活动
if(ContextCompat。 checkSelfPermission(MainActivity,
Manifest.permission.READ_SMS)
!= PackageManager.PERMISSION_GRANTED){

ActivityCompat.requestPermissions(thisActivity,
new String [] {Manifest。 permissio n.READ_SMS},
REQUEST_CODE_ASK_SINGLE_PERMISSION);

// REQUEST_CODE_ASK_SINGLE_PERMISSION是一个
//应用定义的int常量。回调方法获取请求的
//结果。
}
}


解决方案

你可以通过在您的活动中扩展此给定的类来实现,

  public class BasePermissionAppCompatActivity extends AppCompatActivity {

private final static String APP_NAME =APP_NAME;
private final static int REQUEST_READ_SMS_PERMISSION = 3004;
public final static String READ_SMS_PERMISSION_NOT_GRANTED =请允许+ APP_NAME +从设置访问您的短信;

RequestPermissionAction onPermissionCallBack;

private boolean checkReadSMSPermission(){
if(Build.VERSION.SDK_INT> = Build.VERSION_CODES.M){
if(checkSelfPermission(Manifest.permission.READ_SMS)= = PackageManager.PERMISSION_GRANTED){
return true;
} else {
return false;
}
} else {
return true;
}
}

public void getReadSMSPermission(RequestPermissionAction onPermissionCallBack){
this.onPermissionCallBack = onPermissionCallBack;
if(Build.VERSION.SDK_INT> = Build.VERSION_CODES.M){
if(!checkReadSMSPermission()){
requestPermissions(new String [] {Manifest.permission.READ_SMS} ,REQUEST_READ_SMS_PERMISSION);
return;
}
}
if(onPermissionCallBack!= null)
onPermissionCallBack.permissionGranted();


@Override
public void onRequestPermissionsResult(int requestCode,String [] permissions,int [] grantResults){
super.onRequestPermissionsResult(requestCode,permissions,grantResults );
if(grantResults [0] == PackageManager.PERMISSION_GRANTED){

if(REQUEST_READ_SMS_PERMISSION == requestCode){
// TODO请求授予READ_SMS。
System.out.println(REQUEST_READ_SMS_PERMISSION Permission Granted);
}
if(onPermissionCallBack!= null)
onPermissionCallBack.permissionGranted();

} else if(grantResults [0] == PackageManager.PERMISSION_DENIED){
if(REQUEST_READ_SMS_PERMISSION == requestCode){
// TODO REQUEST_READ_SMS_PERMISSION权限不被授予。
// TODO请求未授予。


//此代码用于设置获取权限。
// final Intent i = new Intent();
//i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
//i.addCategory(Intent.CATEGORY_DEFAULT);
//i.setData(Uri.parse(\"package:+ getPackageName()));
//i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
//i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
// startActivity(i);
}
if(onPermissionCallBack!= null)
onPermissionCallBack.permissionDenied();
}
}

public interface RequestPermissionAction {
void permissionDenied();

void permissionGranted();
}

}

喜欢这个

  public class ActivityMain extends BasePermissionAppCompatActivity 

现在在您的ActivityMain中,您可以通过此代码块获得许可

  getReadSMSPermission(new RequestPermissionAction(){
@Override
public void permissionDenied(){
//返回,当权限被拒绝
// TODO,权限后的任务不是greante
}

@Override
public void permissionGranted(){
//返回当权限授予
// TODO,权限后的任务是greante
}
} );

还有一件事,您需要在清单中添加权限

 < uses-permission android:name =android.permission.READ_SMS/> 


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

I used brodcast receiver class for reading SMS it's working fine for jellybean to lolipop but not for marshmallow and lower versions than jellybean like icecream sandwitch, how can i make application to compatible for all android versions,

please guide me step by step because i'm new for this and please give me example also.

hear is my code for read sms permission..

public void getpermission(){


    // Here, thisActivity is the current activity
    if (ContextCompat.checkSelfPermission(MainActivity,
                    Manifest.permission.READ_SMS)
            != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(thisActivity,
                    new String[]{Manifest.permission.READ_SMS},
                    REQUEST_CODE_ASK_SINGLE_PERMISSION);

            // REQUEST_CODE_ASK_SINGLE_PERMISSION is an
            // app-defined int constant. The callback method gets the
            // result of the request.
        }
    }

解决方案

you can do it by extending this given class in your Activity,

public class BasePermissionAppCompatActivity extends AppCompatActivity {

private final static String APP_NAME = "APP_NAME";
private final static int REQUEST_READ_SMS_PERMISSION = 3004;
public final static String READ_SMS_PERMISSION_NOT_GRANTED = "Please allow " + APP_NAME + " to access your SMS from setting";

RequestPermissionAction onPermissionCallBack;

private boolean checkReadSMSPermission() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (checkSelfPermission(Manifest.permission.READ_SMS) == PackageManager.PERMISSION_GRANTED) {
            return true;
        } else {
            return false;
        }
    } else {
        return true;
    }
}

public void getReadSMSPermission(RequestPermissionAction onPermissionCallBack) {
    this.onPermissionCallBack = onPermissionCallBack;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (!checkReadSMSPermission()) {
            requestPermissions(new String[]{Manifest.permission.READ_SMS}, REQUEST_READ_SMS_PERMISSION);
            return;
        }
    }
    if (onPermissionCallBack != null)
        onPermissionCallBack.permissionGranted();
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

        if (REQUEST_READ_SMS_PERMISSION == requestCode) {
            // TODO Request Granted for READ_SMS.
            System.out.println("REQUEST_READ_SMS_PERMISSION Permission Granted");
        }
        if (onPermissionCallBack != null)
            onPermissionCallBack.permissionGranted();

    } else if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
        if (REQUEST_READ_SMS_PERMISSION == requestCode) {
            // TODO REQUEST_READ_SMS_PERMISSION Permission is not Granted.
            // TODO Request Not Granted.


            // This code is for get permission from setting.
            //final Intent i = new Intent();
            //i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            //i.addCategory(Intent.CATEGORY_DEFAULT);
            //i.setData(Uri.parse("package:" + getPackageName()));
            //i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            //i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            //i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
            //startActivity(i);
        }
        if (onPermissionCallBack != null)
            onPermissionCallBack.permissionDenied();
    }
}

public interface RequestPermissionAction {
    void permissionDenied();

    void permissionGranted();
}

}

like this

public class ActivityMain extends BasePermissionAppCompatActivity

now in your ActivityMain you can get permission by this code block

getReadSMSPermission(new RequestPermissionAction() {
@Override
public void permissionDenied() {
    // Call Back, when permission is Denied
    // TODO, task after permission is not greante
}

@Override
public void permissionGranted() {
    // Call Back, when permission is Granted
    // TODO, task after permission is greante
}
});

And One more thing, you need to add a permission in your manifest

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

这篇关于如何给运行时间许可棉花糖来从eclipse中的收件箱中读取短信的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆