如何在android中以编程方式进行调用[复制]

前端之家收集整理的这篇文章主要介绍了如何在android中以编程方式进行调用[复制]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How to make a phone call programmatically?7个
我想通过编程方式定期拨打/接听来自我的Android应用程序的测试,并从我的网络收集统计信息.所以我的应用程序会经常拨打一个号码,当电话接听时,应用程序将在几秒钟后终止呼叫.首先,我理解的代码可以使用.它将拨打和拨打我指定的号码,而不必触摸屏幕.
  1. public class MainActivity extends AppCompatActivity {
  2.  
  3. int MY_PERMISSIONS_REQUEST_CALL_PHONE = 101;
  4.  
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9.  
  10. call();
  11. }
  12.  
  13. private void call() {
  14.  
  15. try {
  16.  
  17. Intent callIntent = new Intent(Intent.ACTION_CALL);
  18. callIntent.setData(Uri.parse("tel:2125551212"));
  19. System.out.println("====before startActivity====");
  20.  
  21.  
  22.  
  23. if (ActivityCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE) !=
  24. PackageManager.PERMISSION_GRANTED) {
  25.  
  26. ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},MY_PERMISSIONS_REQUEST_CALL_PHONE);
  27.  
  28. return;
  29. }
  30.  
  31. startActivity(callIntent);
  32. System.out.println("=====getcallActivity==="+getCallingActivity());
  33.  
  34.  
  35. } catch (ActivityNotFoundException e) {
  36. Log.e("helloAndroid","Call Failed",e);
  37. }
  38. }
  39.  
  40. }

清单有这条线:

根据我的理解,ACTION_CALL应该拨打我提供的号码,而不必按下DIAL键.但是就像ACTION_DIAL一样,它在屏幕上显示数字,然后用户必须按DIAL键才能发出呼叫. ACTION_DIAL和ACTION_CALL之间没有区别吗?

在阅读了一些帖子后,我了解到需要用户拨打6.0以上的权限来拨打电话(我在上面的代码中使用过)

我的问题是,如果我使用Lollipop(5.0)操作系统,那么我可以在不拨号的情况下拨打电话吗?

解决方法

ACTION_DIAL

在API级别1中添加

字符串ACTION_DIAL

活动操作:拨打数据指定的号码.这显示了正在拨打号码的UI,允许用户明确发起呼叫.

输入:如果没有,则启动空拨号器,否则getData()是要拨打的电话号码的URI或显式电话号码的tel:URI.

输出:没什么.

常量值:android.intent.action.DIAL

ACTION_CALL

在API级别1中添加

字符串ACTION_CALL

活动操作:对数据指定的某人执行调用.

输入:如果没有,则启动空拨号器; else getData()是要拨打的电话号码的URI或显式电话号码的tel:URI.

输出:没什么.

注意:

>将对哪些应用程序发起呼叫进行限制;大多数应用程序应使用ACTION_DIAL.
>此意图不能用于拨打紧急号码.应用程序可以使用ACTION_DIAL拨打紧急号码.
>如果你的应用程序针对Android M及以上,并声明为使用CALL_PHONE
未授予的权限,然后尝试使用此操作
将导致SecurityException.

常量值:android.intent.action.CALL

所以基本上

要打开拨号器应用程序(用户必须按拨号器应用程序内的呼叫按钮;无需其他权限),请使用:

  1. String number = "7777777777";
  2. Uri call = Uri.parse("tel:" + number);
  3. Intent surf = new Intent(Intent.ACTION_DIAL,call);
  4. startActivity(surf);

要打开拨号器应用程序并自动执行调用(需要android.permission.CALL_PHONE),然后使用:

  1. String number = "7777777777";
  2. Uri call = Uri.parse("tel:" + number);
  3. Intent surf = new Intent(Intent.ACTION_CALL,call);
  4. startActivity(surf);

猜你在找的Android相关文章