Android ACTION_CALL 不起作用[重复]
Posted
技术标签:
【中文标题】Android ACTION_CALL 不起作用[重复]【英文标题】:Android ACTION_CALL not working [duplicate] 【发布时间】:2016-05-19 21:20:37 【问题描述】:由于某种原因,ACTION_CALL 在我的应用程序中不起作用。我已将权限添加到清单中:
<uses-permission android:name="android.permission.CALL_PHONE" />
这是我从主要活动中调用 action_call 的地方:
case R.id.button2:
intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:(+44)12345678900"));
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED)
Toast.makeText(this, "No permission to call!", Toast.LENGTH_SHORT).show();
return;
startActivity(intent);
break;
每次显示吐司并且不叫号码。任何帮助,将不胜感激! :)
清单代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.adamw_000.lab_1_intents" >
<uses-permission android:name="android.permission.CALL_PHONE" />
【问题讨论】:
请显示您呼叫requestPermissions()
的代码,以向用户请求此权限。另外,您确定您的 <uses-permission>
元素位于清单中的正确位置吗?顺便说一句,我建议删除tel:
字符串中的空格,因为这可能会使拨号器感到困惑,当你到达那个点时。
已删除空格并添加清单权限的代码,我不调用请求权限,因为权限已在清单中给出
“我不调用请求权限,因为清单中已经给出了权限”——那是你的错误。调用checkSelfPermission()
的目的是查看用户是否授予了权限。在 Android 6.0 上,如果您的 targetSdkVersion
为 23 或更高,您确实不会自动获得此权限并需要请求它。有关详细信息,请参阅重复的问题。
我正在使用 api 22 编辑:nvm 我知道你在欢呼中要去哪里
【参考方案1】:
也许您应该将startActivity()
添加为
startActivity(intent);
编辑
我使用了这个代码:
intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel: (+44)12345678900"));
startActivity(intent);
而且效果很好……
试试这个,它对我也很有效,但它正在使用ACTION_DIAL
:
public static Intent newPhoneCallIntent(String phoneNumber)
Intent callintent = new Intent(Intent.ACTION_DIAL);
callintent.setData(Uri.parse("tel:"+phoneNumber));
return callintent;
在您的Button
中添加:startActivity(newPhoneCallIntent("(+44)12345678900"));
【讨论】:
哎呀我的错!复制时已经在那里错过了那行现在添加它 @AdamW95 请看我的编辑 问题是用户必须授予 api 23+ 的权限,不过谢谢 :) @AdamW95 所以我的回答对你没有帮助?我删除答案还是你接受? @AdamW95 你可以在这里写一个详细的解决方案作为答案。它会帮助很多人以上是关于Android ACTION_CALL 不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 中未授予 Action_Call 权限
调用 Intent.ACTION_CALL 时出现 ActivityNotFoundException