当我使用以下代码从我的程序中拨打电话号码时
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:0705352951"));
startActivity(callIntent);
我得到一个问题,我将使用什么程序来拨打电话。我想要的是我的程序只使用手机上的默认程序,跳过这个问题,这是一种方法吗?
当我使用以下代码从我的程序中拨打电话号码时
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:0705352951"));
startActivity(callIntent);
我得到一个问题,我将使用什么程序来拨打电话。我想要的是我的程序只使用手机上的默认程序,跳过这个问题,这是一种方法吗?
添加
<uses-permission android:name="android.permission.CALL_PHONE" />
到您的 manifest.xml
你可以看看这个:http ://wptrafficanalyzer.in/blog/call-a-number-directly-from-an-android-application/
您的意思是当您单击按钮拨打电话时,它会打开一个弹出窗口以选择默认应用程序?因此,您必须单击一次默认拨号器图标,然后单击下面的“仍在使用此应用程序”或类似的东西,并且弹出窗口不会再次出现!希望它会帮助某人。
您在这里所做的是使用一个隐式意图,该意图要求一个可以回答 CALL 操作的应用程序。如果找到几个,系统会询问用户。
为避免此阶段,您必须自己解决意图并使用显式意图。
通常,您会执行以下操作:
int flag = PackageManager.MATCH_DEFAULT_ONLY;
List<ResolveInfo> matches = getPackageManager().queryIntentActivities(intent, flag);
// This gets you a list. Typically you'll want the first item.
// However, from the doc, it is unclear if the first item is the best item or the chooser intent
ActivityInfo actualInfo = matches.get(0).activityInfo;
// Then you can create a ComponentName to make the intent explicit
intent.setComponentName(new ComponentName(actualInfo.packageName, actualInfo.name));
// and finally start your activity
startActivity(intent);