0

私には画像ボタンが付いたアダプタがあります。そしてOnClickImageButton私は解析している連絡先番号に電話したいと思う。ここで私は許可チェックを追加するように頼んでいます。私はこの段階でクラスキャスト例外を取得しています。助けてください。アンドロイドアプリからの呼び出しと許可の確認

これは私のコードです:

holder.call.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if (ActivityCompat.checkSelfPermission(context, 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. 
      ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE); 
       } else { 
        Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:"+storePro.getStoreContact())); 
        callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(callIntent); 
       } 

      } 
     }); 

と私は取得しています例外:

FATAL EXCEPTION: main 
java.lang.ClassCastException: com.example.project.app.AppController cannot be cast to android.app.Activity 
+0

マニフェストファイルにアクセス許可を設定してみませんか?その場で許可要求をする必要がある理由はありますか? – hildegard

+0

'ActivityCompat.requestPermission()'の代わりに 'ContextCompat.requestPermission()'を使用してみてください – SripadRaj

+0

@hildegard FYIあなたはアンドロイド6.0以上で実行時に特定の権限を処理する必要があります。 – SripadRaj

答えて

1

これは、あなたが間違った値を渡した意味

if (ContextCompat.checkSelfPermission(Activity.this, 
          Manifest.permission.CALL_PHONE) 
          != PackageManager.PERMISSION_GRANTED) { 


         // Should we show an explanation? 
         if (ActivityCompat.shouldShowRequestPermissionRationale(Activity.this, 
           Manifest.permission.CALL_PHONE)) { 

          // Show an expanation to the user *asynchronously* -- don't block 
          // this thread waiting for the user's response! After the user 
          // sees the explanation, try again to request the permission. 

         } else { 

          // No explanation needed, we can request the permission. 

          ActivityCompat.requestPermissions(Activity.this, 
            new String[]{Manifest.permission.CALL_PHONE}, 
            2); 


         } 
        } 
        else { 
         // do what you want 

        } 
+0

Didnt work。私はこのコードをアダプターに持っています。 'ActivityName.this'をアダプタで渡すべき引数は何ですか? –

+0

あなたのアクティビティ名は..デフォルトではMainActivity ...となります。そのコードはMainActivityになります。これはあなたにそのアクティビティのコンテキストを与えます。それ以降の結果は何ですか? – snehasish

+0

'activityname。これは封筒のクラスではありません –

0
FATAL EXCEPTION: main 
java.lang.ClassCastException: com.example.project.app.AppController cannot be cast to android.app.Activity 

このコードを貼り付けコンテキストをアダプタに接続します。アクティビティのコンテキストを渡す必要があります。

+0

私はコンテキストを渡したことを知っています。しかし、私はアダプタでこの権限をチェックするはずです。アクティビティを渡してnullポインタ例外をスローしようとしたとき –

+0

アクティビティコンテキストを渡す方法は? –

+0

@varuniアダプタを初期化してコンテキストを渡す方法を教えてください。 – Cobain

関連する問題