【问题标题】:ActivityCompat can't find .checkSelfPermission in eclipseActivityCompat 在 Eclipse 中找不到 .checkSelfPermission
【发布时间】:2017-07-15 08:18:52
【问题描述】:

我已经创建了可以发送消息的程序。当我使用 Activity.checkSelfPermission 时,它会显示类似“ActivityCompat 类型的方法 checkSelfPermission(MainActivity, String) 未定义”的错误。我已经导入了 android.support.v4.app.ActivityCompat。我的目标 API 23 并使用 API 23 进行编译。如何解决?

下面是真正的代码

public class MainActivity extends Activity {

public static final int MY_PERMISSION_SEND_SMS = 10;
public EditText edSMS, edPhone;
public Button btnSent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    edSMS = (EditText)findViewById(R.id.editText1);
    edPhone = (EditText)findViewById(R.id.editText2);
    btnSent = (Button)findViewById(R.id.button1);
    onCheckPermission();
}

private void onCheckPermission() {
    if(ActivityCompat.checkSelfPermission(this,Manifest.permission.SEND_SMS)!= PackageManager.PERMISSION_GRANTED){
        ActivityCompat.requestPermission(this, new String[]{Manifest.permission.SEND_SMS}, MY_PERMISSION_SEND_SMS);
    }       
    else {
        sentMessage();
    }
}
private void sentMessage() {
    btnSent.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String phoneNumber = edPhone.getText().toString();
            String SMS = edSMS.getText().toString();
            if(((phoneNumber.length() == 10) || (phoneNumber.length()==9)) && phoneNumber.length()>0){
                SmsManager smsText = SmsManager.getDefault();
                smsText.sendTextMessage(phoneNumber, null, SMS, null, null);
                Toast.makeText(MainActivity.this, "SMS was sent successful", Toast.LENGTH_LONG).show();
                edPhone.setText("");
                edSMS.setText("");
            } else {
                Toast.makeText(MainActivity.this, "Please check your " + "phone number again",Toast.LENGTH_LONG).show();
            }
        }
    });
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
    switch (requestCode){
        case MY_PERMISSION_SEND_SMS:
            if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                Toast.makeText(this, "Read Contacts permission granted", Toast.LENGTH_SHORT).show();
                sentMessage();
            }else{
                Toast.makeText(this, "Read Contacts permission denied", Toast.LENGTH_SHORT).show();
                if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.SEND_SMS)){
                    new AlertDialog.Builder(this).
                    setTitle("Request Permission SMS").
                    setMessage(" You must set permission to access this application").show();
                }
            }
            break;
    }
}

【问题讨论】:

标签: java android eclipse


【解决方案1】:

要解决 Eclipse 中的 ActivityCompat.checkSelfPermission() not found 方法,您只需将取自 https://github.com/dandar3/android-support-compat/tree/28.0.0android-support-compat.jar 添加到 Eclipse 项目的 libs 文件夹中,然后再次编译。

【讨论】:

    【解决方案2】:

    只需使用support.v7 (import android.support.v7.app.AppCompatActivity;),这很好

    对了?为什么现在还用eclipse?用Android studio就好了。

    【讨论】:

    • 我将尝试使用 Android Studio。
    • 不得不不同意“它更好”。它是不同的。每个 IDE 都有其优点和缺点。
    • 任何人都有 eclipse 的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多