Android权限检查器语法错误

时间:2016-10-05 13:19:46

标签: java android

我正在使用通话应用,需要CALL_PHONE权限,当我尝试启动通话活动startActivity(callIntent);时,它发出错误并说我需要设置权限检查程序并在我之后设置一个它在this语句中给我一个错误说

Wrong 1st Argument type.Found:'android.view.View.OnClickListener',required:'android.context.Context'

所以,如果你能帮助我纠正它,我的主要活动是什么

package com.android.beez.emergencyng;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

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

        Button alert = (Button) findViewById(R.id.alert);

        alert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:123"));
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            startActivity(callIntent);

        }
    });

    }
}

3 个答案:

答案 0 :(得分:0)

问题出在这一行

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)

this更改为MainActivity.this

答案 1 :(得分:0)

您正在传递单击侦听器的上下文引用,这是错误的。使用MainActivity.this作为参数

if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)

而不是

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)

答案 2 :(得分:0)

您的上下文中的

this是指您使用new View.OnClickListener创建的匿名类。要将错误更改this修改为MainActivity.this

相关问题