2016-07-27 2 views
0

나는 Lynda.com에서 비디오를보고 있는데 런타임시 요청 권한을 얻으려고합니다. 하지만 난이 오류 : 오류가 표시되는 위치를 여기 런타임에 권한을 요청할 수 없습니다 (Android)

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference 
at com.doppler.stackingcoder.pechhulp.PechhulpActivity.makeCall(PechhulpActivity.java:226) 

은 방법 :

public void makeCall() { 
    Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:09003344556")); 
    if (ActivityCompat.checkSelfPermission(
      PechhulpActivity.this, Manifest.permission.CALL_PHONE) // Line 226 (Error) 
      != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(PechhulpActivity.this, 
       Manifest.permission.CALL_PHONE)) { 
      Toast.makeText(PechhulpActivity.this, "I know you said no, but I'm asking again", Toast.LENGTH_SHORT).show(); 
     } 
     ActivityCompat.requestPermissions(PechhulpActivity.this, 
       new String[]{Manifest.permission.CALL_PHONE}, 
       MY_PERMISSIONS_REQUEST_CALL_PHONE); 
     return; 
    } 
    startActivity(callIntent); 
} 

나는이 오류가 나타납니다 왜 누군가가 알고 있기를 바랍니다. 여기 내 전체 수업의 요지가 있습니다 : https://gist.github.com/soufyanekaddouri/812f65669847619e3af7016403b1e7be

답변

0

당신은 Context로 PechhulpActivity.this를 전달하고 있지만 사실 이것은 null 참조 인 것 같습니다. 다른 방법으로 (즉, getApplicationContext(), 컨텍스트를 전역 변수로 저장하는 등) 컨텍스트를 해결하는 것이 좋습니다.

public class PechhulpActivity extends Activity{ 

    Context mContext; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mContext = getApplicationContext(); 
     ... 
     ... 
    } 

    public static Context getContext(){ 
     return mContext; 
    } 
} 
+0

당신이 나에게 예를 제공 할 수 있습니다하십시오 : 여기

응용 프로그램 컨텍스트에 액세스하는 방법의 예입니다? – Stackingcoder

+0

답변을 편집하고 예제를 추가했습니다. –

관련 문제