2016-10-05 8 views
0

私は通話アプリで働いていて、CALL_PHONEパーミッションをリクエストする必要がありました.コールアクティビティを開始しようとしたときにエラーが発生し、パーミッションチェッカーを設定する必要があると言いました。あなたは助けることができればピーズAndroid権限チェッカーの構文エラー

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

はそうHERESに私の私の主な活動は、私はそれを是正することを言ってthis声明に私にエラーを与えた

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

0

MainActivity.thisに変化があります。あなたのコンテキストで代わりに

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

thisの引数

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

として使用MainActivity.thisあなたはnew View.OnClickListenerで作成した匿名クラスを指します。エラーを修正するにはthisMainActivity.thisに変更してください。