有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为不同的活动调用类中的上下文

我正在检查类内的发送\u SMS权限:

public class SendSms extends Activity{
    int requestPerm;

    private void checkPermissionSms(){
        if(ContextCompat.checkSelfPermission(, Manifest.permission.SEND_SMS)
                != PackageManager.PERMISSION_GRANTED){
                   ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS},
                          requestPerm);                                 //If we don't have the permission, request it here
        }
    }

但在checkSelPermission中,它需要一个上下文,但我不确定它需要什么上下文(甚至不太确定checkSelfPermission需要什么上下文) 我的发言如下:

https://developer.安卓.com/training/permissions/requesting.html#java

上述方法的调用方式如下:

public static void sendSms(String message){
   // Intent calledSendSMS = getIntent();
    //String message = calledSendSMS.getStringExtra(Intent.EXTRA_TEXT);
 //   PendingIntent pi = PendingIntent.getActivity(this,0, new Intent(this,SendSms.class),0);
    SendSms checkPerm = new SendSms();
    SmsManager sendTheMessage = SmsManager.getDefault();
    String phoneNumber = "5556";
    checkPerm.checkPermissionSms();
    sendTheMessage.sendTextMessage(phoneNumber, null,message,null,null);
}

这个方法是从另一个活动调用的。 我确实输入了“this”,但随后出现以下错误:

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int 安卓.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference
                      at 安卓.content.ContextWrapper.checkPermission(ContextWrapper.java:724)
                      at 安卓.support.v4.content.ContextCompat.checkSelfPermission(ContextCompat.java:430)
                      at com.example.安卓.footysortit.SendSms.checkPermissionSms(SendSms.java:17)

实际上,我所要做的就是检查权限,如果需要的话,请求它

编辑:如果我在实际活动中添加检查权限,并使用“this”,则效果很好。 那么如何让它传递活动数据呢


共 (1) 个答案

  1. # 1 楼答案

    改变这一点:

    SendSms checkPerm = new SendSms();
    

    致:

    SendSms checkPerm = new SendSms(this);
    

    SendSms类-您需要创建该类的构造函数

    public class SendSms extends Activity {
    
    private Activity mActivity;
    private int requestPerm;
    
    public SendSms(Activity mActivity) {
        this.mActivity = mActivity;
    
    }
    
    private void checkPermissionSms() {
        if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, requestPerm);
            //If we don't have the permission, request it here
        }
      }
    }