PHONE_STATE意图过滤器

时间:2015-03-15 08:32:52

标签: android-intent

我需要在清单中找到定义PHONE_STATE intent-filter的所有应用程序..我让它适用于CALL-action字符串,所以我的代码可以工作:

Intent callIntent = new Intent(Intent.ACTION_CALL, null);
List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(callIntent, 0);

问题是字符串本身。它说here有一个常量值“android.intent.action.PHONE_STATE”,但是我既不能像使用CALL-action字符串那样从代码中访问它,也不能在我自己的Manifest中定义它与

<intent-filter> <action android:name="android.intent.action.PHONE_STATE" />

我对CALL-action字符串的处理方式也是如此,因为在这两种情况下都没有这样的值 我也在论文[2]中读过这个意图,所以我确信它确实存在。那么它消失了还是我可以用另一种方式访问​​它? 我想用这个意图过滤应用程序的原因:我需要为PHONE_STATE操作字符串注册BoradcastReceiver的所有应用程序,据我所知,这是通过确切的意图完成的。
如果现在它的工作方式不同或者我的字符串错了,那么任何提示都非常受欢迎!

[2]:关于轻量级手机应用认证 - Enck等人

1 个答案:

答案 0 :(得分:0)

好的,所以我读了几次我发布的链接,现在我能够弄明白了。所以这里有解决方案,如果其他人也对此感到困惑:
由于某种原因,它与其他Intent的工作方式不同。 AndroidStudio似乎也被混淆了,因为我能够添加

<intent-filter> <action android:name="android.intent.action.PHONE_STATE" />

这次进入清单。
然后,您可以使用

在应用程序中获取它
Intent phoneStateIntent = new Intent(TelephonyManager.ACTION_PHONE_STATE_CHANGED);

所以上面发布的android文档显示了TelephonyManager.ACTION_PHONE_STATE_CHANGED和intent-filter android.intent.action.PHONE_STATE之间的联系。我之前没有意识到这一点!希望这能帮到别人!