Android 从国内外拨打电话
Android making phones calls from inside & outside country
这很简单,我想在点击它时创建一个功能,它会调用 number.However,如果你在阿曼境内,我想拨打一个号码,如果你在国外,我想拨打另一个号码。
我试过了,想知道这样做是否正确...或者我必须依赖其他东西
PackageManager pm = getPackageManager();
boolean hasTelephony = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
if(hasTelephony)
{
TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if(tManager != null)
{
String locale = tManager.getSimCountryIso();
if(locale != null && locale.toLowerCase().equals("om"))
{
i.setData(Uri.parse("tel:800"));
}
else
i.setData(Uri.parse("tel:+9687"));
}
else
i.setData(Uri.parse("tel:+9687"));
}
else
i.setData(Uri.parse("tel:+9687"));
您的方向是正确的,但您可能想致电:
tManager.getNetworkCountryIso()
这样您就可以获得您的 phone 所连接的移动网络所在的国家/地区,而不是您的 SIM 卡所在的国家/地区(始终相同)。
附带说明:您无需检查设备是否具有电话功能 - 如果没有,则 tManager 无论如何都会为 null。
这很简单,我想在点击它时创建一个功能,它会调用 number.However,如果你在阿曼境内,我想拨打一个号码,如果你在国外,我想拨打另一个号码。
我试过了,想知道这样做是否正确...或者我必须依赖其他东西
PackageManager pm = getPackageManager();
boolean hasTelephony = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
if(hasTelephony)
{
TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if(tManager != null)
{
String locale = tManager.getSimCountryIso();
if(locale != null && locale.toLowerCase().equals("om"))
{
i.setData(Uri.parse("tel:800"));
}
else
i.setData(Uri.parse("tel:+9687"));
}
else
i.setData(Uri.parse("tel:+9687"));
}
else
i.setData(Uri.parse("tel:+9687"));
您的方向是正确的,但您可能想致电:
tManager.getNetworkCountryIso()
这样您就可以获得您的 phone 所连接的移动网络所在的国家/地区,而不是您的 SIM 卡所在的国家/地区(始终相同)。
附带说明:您无需检查设备是否具有电话功能 - 如果没有,则 tManager 无论如何都会为 null。