How to Make a Call directly in Android

后端 未结 6 2225
囚心锁ツ
囚心锁ツ 2020-12-21 05:23

I know it was very simple to do it but I come across a very strange issue. I have to call Police in danger Situation by just tapping a button. So I have used following code

6条回答
  •  攒了一身酷
    2020-12-21 05:57

    A Long time passed. But may help someone else. If you want to call directly, you should use requestPermissions method.

    1. Add this line to your manifest file:

    
    

    2. Define a class variable in the activity class:

    private static Intent phoneCallIntent; //If use don't need a member variable is good to use a static variable for memory performance.
    

    3. Add these lines to the onCreate method of the activity:

    final String permissionToCall = Manifest.permission.CALL_PHONE;
    //Assume that you have a phone icon.
    (findViewById(R.id.menuBarPhone)).setOnClickListener(new OnClickListener(){
        public void onClick(View view) {
            phoneCallIntent = new Intent(Intent.ACTION_CALL);
            phoneCallIntent.setData(Uri.parse(getString(R.string.callNumber))); //Uri.parse("tel:your number")
            if (ActivityCompat.checkSelfPermission(MainFrame.this, permissionToCall) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(MainFrame.this, new String[]{permissionToCall}, 1);
                return;
            }
            startActivity(phoneCallIntent);
        }
    });
    

    4. And for making a call immediately after clicking on Allow button, override onRequestPermissionsResult method:

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode == 1){
            final int permissionsLength = permissions.length;
            for (int i = 0; i < permissionsLength; i++) {
                if(grantResults[i] == PackageManager.PERMISSION_GRANTED){
                    startActivity(phoneCallIntent);
                }
            }
        }
    

    When a user give the permission, next time there will be no dialogue box and call will be make directly.

提交回复
热议问题