我希望能够从我的Android应用程序定期发起/接收测试目的的电话,并从我的网络中收集统计数据。因此,我的应用程序将每隔一段时间呼叫一个号码,当通话接通后,应用程序将在几秒钟后终止通话。以下是我理解的可能适用的代码。它将拨号并呼叫我指定的号码,而无需我触摸屏幕。
public class MainActivity extends AppCompatActivity {
int MY_PERMISSIONS_REQUEST_CALL_PHONE = 101;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
call();
}
private void call() {
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:2125551212"));
System.out.println("====before startActivity====");
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CALL_PHONE},
MY_PERMISSIONS_REQUEST_CALL_PHONE);
return;
}
startActivity(callIntent);
System.out.println("=====getcallActivity==="+getCallingActivity());
} catch (ActivityNotFoundException e) {
Log.e("helloAndroid","Call failed",e);
}
}
}
清单文件中有这一行:
根据我的理解,ACTION_CALL应该直接拨打我提供的号码,而不需要按下“拨号”按钮。但是它的作用就像ACTION_DIAL,显示号码在屏幕上,用户必须按下“拨号”按钮才能拨打电话。那么ACTION_DIAL和ACTION_CALL之间没有区别吗?
阅读了一些帖子后,我了解到从6.0开始需要向用户请求权限才能拨打电话(我在上面的代码中使用了这个)。
我的问题是,如果我使用Lollipop(5.0)操作系统,我是否能够在不拨号的情况下拨打电话?