使用Intent拨打电话时所需的权限?

时间:2011-11-07 19:15:01

标签: android permissions android-intent

在我的某个应用中,我使用以下代码拨打电话:

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(...)); 
startActivity(intent);

文档说我确实需要以下Manifest权限:

<uses-permission android:name="android.permission.CALL_PHONE" />

这真的需要吗?我不明白手机和相机功能之间的区别。使用手机时,我确实需要许可,但我不需要相机意图的许可:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
...
startActivityForResult(intent, 1);

是否有关于硬件功能的列表,如果在意图的帮助下触发了需要许可,哪些不需要?

3 个答案:

答案 0 :(得分:21)

实际上,如果您只想打开具有特定电话号码的拨号器而无需直接呼叫(需要用户确认),您可以在未经许可的情况下进行:

startActivity( new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + PhoneNumber)));

答案 1 :(得分:12)

  

这真的需要吗?

  

我不明白手机和相机功能之间的区别。

电话可能会花费人们的钱。因此,如果您直接拨打电话(而不是ACTION_DIAL只是将号码放入拨号器中),Android希望用户提前同意以允许此操作。

使用相机拍照通常不会直接使用户花钱。

  

是否有关于硬件功能的列表,如果在意图的帮助下触发了需要许可,哪些不需要?

不是。

答案 2 :(得分:1)

当您向相机发出请求时,它只会打开一个需要用户互动的应用才能执行任何操作。

电话打开已经输入电话号码的应用程序,因此您只需按一个按钮即可。

你不小心打电话给别人的风险比你不小心拍照的风险要大得多(如果不小心拍的话,你可以删除。)