내 애플리케이션에서 전화를 걸어야합니다. 하지만 Android 및 그 이상 버전에서 올바르게 수행하는 방법을 혼란스럽게합니다. 내가 이해할 수있는대로 requestPermissions으로 전화를 걸어야 한 다음 에서 onRequestPermissionsResult과 결과를 함께 사용해야합니다. 하지만이 함수 어딘가에 함수에 callNumber를 저장해야합니다.Android에서 권한 요청 옵션 추가
활동의 전화 번호 저장이 좋은 생각인지는 모르겠지만 다른 옵션은 없습니다. 그래서 나는이 코드를 작성 : 우리는 비동기 요청이 나는 그것을 할 수없는 것을 이해 &을 처리하면서 변경할 수 있지만 잠재적의 문제가 활동에 전화를 저장하면
public void callDriver(String phoneNumber) {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse(String.format("tel:+%s", phoneNumber)));
//FIXME: we need to save driver for calling in callback
phoneNumberForCall = phoneNumber; //potential problem
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CALL_PHONE},
TaxiApp.MY_PERMISSIONS_REQUEST_CALL_PHONE);
} else {
startActivity(callIntent);
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case TaxiApp.MY_PERMISSIONS_REQUEST_CALL_PHONE: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse(String.format("tel:+%s", phoneNumberForCall)));
startActivity(callIntent);
} else {
Toast.makeText(this, getString(R.string.no_call_permission), Toast.LENGTH_LONG).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
.
어떻게해야합니까?
P. 전화 번호는 변경 될 수 있습니다. 그 이상의 숫자가있는 목록 (recycleView)이 있습니다. 사용자는 각 번호와 기능을 클릭 할 수 있습니다. callDriver이 호출됩니다.
내가이 상황을 두려워 : 수에
- 사용자 클릭 -> 기능 callDriver는
- callDriver 요청 권한을 실행합니다. 첫 번째 숫자가 저장되었습니다.
- 사용자가 다른 전화 번호를 클릭 -> function callDriver은 요청 권한을 실행하고 저장된 번호가 변경되었습니다. 두 번째 숫자가 저장됩니다.
- 허가가 승인되었습니다. 콜백이 실행되고 두 번째 숫자가 호출됩니다.
그래서 우리는 첫 번째 드라이버를 호출하지 않습니다. 나는이 상황이 계속 일어날 수 있다고 생각하지 않는다. (사용자가 너무 빨리 클릭해야합니다.) 그러나 올바르게 수행하는 방법을 알고있는 것이 좋습니다.
당신은이 목적을 위해 된 SharedPreferences를 사용할 수 있습니다. https://developer.android.com/training/basics/data-storage/shared-preferences를 확인하십시오.htaccess Admin Home English Language Content –
연락처 번호가 항상 동일하면 여기에 쓸 수 있지만 변경되거나 여러 가지 번호가있을 수있는 경우 공유 환경 설정에 저장하고 거기에서 사용할 수 있습니다. –
@ Mr.Rabbit와 동의 sharepreferences를 사용하면 앱에서 어디에서나 사용할 수 있습니다. –