2016-10-05 3 views
0

Я работал над приложением для вызова и нуждался в запросе разрешения CALL_PHONE, и когда я попытался запустить активность звонка startActivity(callIntent);, он дал ошибку и сказал, что мне нужно установить средство проверки разрешений, и после того, как я установил его дал мне ошибку на this заявлением о том, чтоОшибка синтаксиса проверки разрешений Android

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

так Heres моя моя основная деятельность, если вы могли бы Пиз помочь мне исправить это

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); 

     } 
    }); 

    } 
} 

ответ

0

Pr oblem в этой линии

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

изменения this в MainActivity.this

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) 
0

this в вашем контексте относится к анонимному классу, который вы создали с new View.OnClickListener. Чтобы исправить вашу ошибку, измените this на MainActivity.this.

Смежные вопросы