當我使用此代碼時,首先出現撥號盤屏幕與此號碼。如何直接撥打電話?
Intent dialintnt = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:911"));
startActivityForResult(dialintnt, CALLING);
我不想那個屏幕。我想,當我點擊按鈕直接調用該號碼。 那麼我怎樣才能撥打號碼onclick
?
當我使用此代碼時,首先出現撥號盤屏幕與此號碼。如何直接撥打電話?
Intent dialintnt = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:911"));
startActivityForResult(dialintnt, CALLING);
我不想那個屏幕。我想,當我點擊按鈕直接調用該號碼。 那麼我怎樣才能撥打號碼onclick
?
您將需要添加CALL_PHONE
和CALL_PRIVILEGED
權限清單文件。
然後數可以使用稱爲:
Uri callUri = Uri.parse("tel://911");
Intent callIntent = new Intent(Intent.ACTION_CALL,callUri);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(callIntent);
這是不可能的。這是爲了用戶保護。
試試這個:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" +phone_number));
startActivity(callIntent);
只要改變ACTION_DIAL
到ACTION_CALL
。
像這樣:
Intent dialintnt = new Intent(Intent.ACTION_CALL,Uri.parse("tel:911"));
startActivityForResult(dialintnt, CALLING);
這是一個漫長的時間。但可能會幫助別人。 如果你想直接打電話,你應該使用requestPermissions方法。
此行添加到您的清單文件:
<uses-permission android:name="android.permission.CALL_PHONE" />
2.定義在活動類的類變量:
private static Intent phoneCallIntent; //If use don't need a member variable is good to use a static variable for memory performance.
添加這些行到onCreate活動方法:
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.而對於點擊允許按鈕之後打電話,立即覆蓋onRequestPermissionsResult方法:
@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);
}
}
}
當用戶賦予的權限,下一次就不會有對話框和電話會直接撥打。
Intent.ACTION_CALL? – njzk2 2013-04-24 07:37:06
(儘管如果你閱讀文檔,你會看到911是緊急號碼(不在美國以外),但不能直接調用) – njzk2 2013-04-24 07:38:49