2015-02-09 88 views
0

我正在尝试搜索具有意图过滤器以用于打电话的活动。这就是我试图做的就是所有可用的活动:意图ACTION_CALL android

Intent callIntent = new Intent(Intent.ACTION_CALL); 
    PackageManager pm = context.getPackageManager(); 
    List<ResolveInfo> resolveInfo = pm.queryIntentActivities(callIntent, 0); 

这将导致resolveInfo列表为空,这意味着没有活动已经发现打个电话。 尽管如此,如果我使用下面的意图,内置的Android应用程序拨打电话得到启动:

Intent callIntent = new Intent(Intent.ACTION_CALL); 
         callIntent.setData(Uri.parse("tel:" + 8888888888)); 
         activity.startActivity(callIntent); 

我的最终目标是使用电话应用程序,即在HTC ONE M8使用的部分汽车APP。

任何想法?

回答

0

你必须使用setData的行添加到您的意图,如:

callIntent.setData(Uri.parse("tel:" + 888888888)); 

那么完整的代码将是:

Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:" + 888888888)); 
    PackageManager pm = getPackageManager(); 
    List<ResolveInfo> resolveInfo = pm.queryIntentActivities(callIntent, 0); 
    Log.d("data", resolveInfo.size()+""); 

现在,您将找到的可用活动的数量。

+0

谢谢,addidng行.setData(..)有所不同。现在我可以看到所有可用于打电话的活动! – nttCoder 2015-02-10 15:09:52

+0

没问题,但让问题解决 – 2015-02-11 15:51:44

+0

这只解决了我的问题的一部分。我正尝试使用HTC ONE M8的车载应用程序。但是,如果应用程序的开发人员没有提供意图,而​​且我不知道包名称,那么我将无法使用该应用程序的活动。我的假设是否正确? – nttCoder 2015-02-11 17:41:45