2013-04-24 135 views
2

當我使用此代碼時,首先出現撥號盤屏幕與此號碼。如何直接撥打電話?

Intent dialintnt = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:911")); 
startActivityForResult(dialintnt, CALLING); 

我不想那個屏幕。我想,當我點擊按鈕直接調用該號碼。 那麼我怎樣才能撥打號碼onclick

+0

Intent.ACTION_CALL? – njzk2 2013-04-24 07:37:06

+0

(儘管如果你閱讀文檔,你會看到911是緊急號碼(不在美國以外),但不能直接調用) – njzk2 2013-04-24 07:38:49

回答

0

answer

您將需要添加CALL_PHONECALL_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); 
5

這是不可能的。這是爲了用戶保護。

0

試試這個:

Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:" +phone_number)); 
    startActivity(callIntent); 
0

只要改變ACTION_DIALACTION_CALL
像這樣:

Intent dialintnt = new Intent(Intent.ACTION_CALL,Uri.parse("tel:911")); 
startActivityForResult(dialintnt, CALLING); 
1

這是一個漫長的時間。但可能會幫助別人。 如果你想直接打電話,你應該使用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); 
      } 
     } 
    } 

當用戶賦予的權限,下一次就不會有對話框和電話會直接撥打。