其他分享
首页 > 其他分享> > 如何使用android.intent.action.CALL_PRIVILEGED和android.intent.action.NEW_OUTGOING_CALL?

如何使用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