gpt4 book ai didi

android - 使用 ACTION_DIAL Intent 时,应用程序是否应该检查设备是否具有调用功能?

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:37 25 4
gpt4 key购买 nike

我的程序中有以下代码:

  public static void callPhoneNumber(Context context, String clientPhoneNum) {

if (isCallingSupported(context)) {
Intent i = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + clientPhoneNum));
context.startActivity(i);
} else {
final AlertDialog alertDialog =
new AlertDialog.Builder(context).setMessage(context.getString(R.string.error))
.setMessage(context.getString(R.string.no_call_functionality))
.setPositiveButton(context.getString(R.string.ok),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})

.create();

alertDialog.show();
}
}

private static boolean isCallingSupported(Context context) {
TelephonyManager telephonyManager =
(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

return (telephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE);
}

我想知道 isCallingSupported() 是否有必要?我不记得我为什么这样写,但现在当我回顾时,我认为用户可能只是使用他的 Skype 或其他 VOIP 应用程序调用一个号码。如果没有 isCallingSupported(),我应该做任何其他检查还是这个 Intent 安全(我所说的安全是指,即使用户的平板电脑没有调用功能,也没有其他应用程序可以处理调用, Intent 不会导致崩溃)?

最佳答案

来自 this问题:

PackageManager manager = context.getPackageManager();
List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
if (infos.size() > 0) {
//Then there is application can handle your intent
}else{
//No Application can handle your intent
}

首先检查是否有任何应用已注册到此 Intent。如果有,请使用它。如果没有,请显示您的对话框。

您最终会用上面的代码替换您的 isCallingSupported 函数:

private static boolean isCallingSupported(Context context) {

boolean result = true;
PackageManager manager = context.getPackageManager();
List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);
if (infos.size() <= 0) {
result = false;
}
return result;

关于android - 使用 ACTION_DIAL Intent 时,应用程序是否应该检查设备是否具有调用功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26997863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com