2017-03-13 9 views
-1

私はダイヤルとして機能する簡単なアンドロイドの活動を作成しました。私は私のアプリを実行すると、問題Androidで実行時にユーザーの権限が許可されているかどうかを確認するにはどうすればよいですか?

  • に持っている(アンドロイド6.0マシュマロ)

    public class Main2Activity extends AppCompatActivity { 
    EditText num; 
    Button call; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main2); 
        num = (EditText) findViewById(R.id.num); 
        call = (Button) findViewById(R.id.call); 
        call.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          try { 
           // request permission if not granted 
           if (ActivityCompat.checkSelfPermission(Main2Activity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
            ActivityCompat.requestPermissions(Main2Activity.this, new String[]{Manifest.permission.CALL_PHONE}, 123); 
            // i suppose that the user has granted the permission 
            Intent in = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + num.getText().toString())); 
            startActivity(in); 
           // if the permission is granted then ok 
           } else { 
            Intent in = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + num.getText().toString())); 
            startActivity(in); 
           } 
          } 
          // catch the exception if i try to make a call and the permission is not granted 
          catch (Exception e){ 
          } 
         } 
        }); 
    } 
    

    }

    を: それはここでは、電話番号と通話ボタン のためのEditTextがコードであり

    私がコールボタンをクリックして許可を与えると、再度クリックするまでインテントが呼び出されない

  • 許可が与えられた場合には、Oチェックしたりしませ

  • ユーザープレス「は、ユーザを押すが許可した場合、」ジャスト条件で意図を呼び出し、と をDENY認め 場合
+0

あなたは次のリンクを試すことがありますhttp://stackoverflow.com/questions/42136340/not-able-to-get-android-run-time-permission-result/42136548#42136548 –

答えて

2

使用onRequestPermissionResultは、それがアクションを処理します。

@Override 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case 123: { 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        //If user presses allow 
        Toast.makeText(Main2Activity.this, "Permission granted!", Toast.LENGTH_SHORT).show(); 
        Intent in = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + num.getText().toString())); 
       startActivity(in); 
       } else { 
        //If user presses deny 
        Toast.makeText(Main2Activity.this, "Permission denied", Toast.LENGTH_SHORT).show(); 
       } 
       break; 
      } 
     } 
    } 

これが役に立ちます。

+0

私はそれを試しましたが、私は拒否します。許可トーストは表示されません –

+0

今すぐ確認してください。 – tahsinRupam

+1

それは今働いているありがとう –

関連する問題