首页 > 解决方案 > 在单击侦听器回调中获取活动上下文

问题描述

 public class MainActivity extends AppCompatActivity {
final int SEND_SMS_PERMISSION_REQUEST_CODE =1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button= (Button) findViewById(R.id.btnSend1);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(checkPermission(Manifest.permission.SEND_SMS)){
                    SmsManager smqr = SmsManager.getDefault();
                    smqr.sendTextMessage("000000000", null, "Message", null, null);
                }
                else
                {
                    ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS},SEND_SMS_PERMISSION_REQUEST_CODE);
                }
            }

            private boolean checkPermission(String permission) {
         int check = ContextCompat.checkSelfPermission(this,permission);
         return (check == PackageManager.PERMISSION_GRANTED);

            }
        });


    }
}

我已经编写了这段代码来制作一个简单的应用程序来将味精发送到电话号码,在 android studio 中它在“this”下放置了红线我不知道为什么提前谢谢

标签: javaandroid

解决方案


你需要一个上下文,this在里面是Interface指接口本身而不是activity上下文。

使用下面的代码:

public class MainActivity extends AppCompatActivity {
private Context context;
final int SEND_SMS_PERMISSION_REQUEST_CODE =1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = this;
        setContentView(R.layout.activity_main);
        Button button= (Button) findViewById(R.id.btnSend1);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if(checkPermission(Manifest.permission.SEND_SMS)){
                    SmsManager smqr = SmsManager.getDefault();
                    smqr.sendTextMessage("000000000", null, "Message", null, null);
                }
                else
                {
                    ActivityCompat.requestPermissions(context,new String[]{Manifest.permission.SEND_SMS},SEND_SMS_PERMISSION_REQUEST_CODE);
                }
            }

            private boolean checkPermission(String permission) {
         int check = ContextCompat.checkSelfPermission(this,permission);
         return (check == PackageManager.PERMISSION_GRANTED);

            }
        });


    }
}

推荐阅读