如何使用android.intent.action.CALL_PRIVILEGED和android.intent.action.NEW_OUTGOING_CALL?
作者:互联网
我找不到以下文档:
android.intent.action.CALL_PRIVILEGED
我看到它在csipsimple中用于处理调用.
我想更好地了解如何使用它.例如:之间的关系是什么
android.intent.action.CALL_PRIVILEGED和android.intent.action.NEW_OUTGOING_CALL?
我补充说:
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
在我的项目的AndroidManifest中.当从本机拨号程序启动调用时,我的活动被调用,但如果在onResume中我执行getIntent().getAction(),则结果为null
编辑
我让它处理onNewIntent以及onCreate. onResume接收一个没有动作的意图(我猜想默认的onNewIntent处理程序发送).
问题是要检查操作是否为CALL_PRIVILEGED,我必须对字符串“android.intent.action.CALL_PRIVILEGED”进行硬编码,因为操作CALL_PRIVILEGED是隐藏的.
我试图仅为ACTION_CALL注册活动,但它不起作用
解决方法:
当您使用以下方式从电话簿拨打电话时,将调用操作意图android.intent.action.CALL_PRIVILEGED:
电话簿 – >联系方式 – >长期点击电话号码 – >从下拉菜单中选择拨打电话.
以下代码应放在Manifest中:
<activity>
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
对HTC来说有些变化:
<activity>
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/phone" />
<data android:mimeType="vnd.android.cursor.item/phone_v2" />
<data android:mimeType="vnd.android.cursor.item/person" />
</intent-filter>
</activity>
当此代码添加到Manifest并且您尝试按上述方式进行调用时,您可以获取Application Chooser并以此方式拦截该调用并继续通过所选应用程序进行调用.
至于它在BroadcastReceivers中使用的android.intent.action.NEW_OUTGOING_CALL,当你想得到关于拨出电话的通知时.例如,如果你想要,你应该将以下鳕鱼放到Manifest:
<receiver android:name=".CallReceiver">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
并创建:
public class CallReceiver extends BroadcastReceiver{
private static final String TAG = "Call_Receiver";
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
//Notification there
....
}
}
使用此功能,您可以在拨打电话时始终收到通知.
这些项目之间的主要区别是,第一次拦截意图,第二项只能得到某些事情发生的结果.
标签:android,android-intent,phone-call 来源: https://codeday.me/bug/20190712/1442376.html