我需要在清单中找到定义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等人
答案 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
之间的联系。我之前没有意识到这一点!希望这能帮到别人!