gpt4 book ai didi

android - 如何使用 android.intent.action.CALL_PRIVILEGED 和 android.intent.action.NEW_OUTGOING_CALL?

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:25 26 4
gpt4 key购买 nike

我找不到以下文档:

android.intent.action.CALL_PRIVILEGED

我看到它在 csipsimple 中用于处理调用。

我想更好地了解如何使用它。例如:之间的关系是什么android.intent.action.CALL_PRIVILEGEDandroid.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 中。当从 native 拨号器开始调用时,我的 Activity 被调用,但如果在 onResume 中我执行 getIntent().getAction() 结果为 null

编辑

我让它可以处理 onNewIntent 和 onCreate。 onResume 收到一个没有操作的 Intent (我想是由默认的 onNewIntent 处理程序发送的)。

问题是,为了检查操作是否为 CALL_PRIVILEGED,我必须对字符串“android.intent.action.CALL_PRIVILEGED”进行硬编码,因为操作 CALL_PRIVILEGED 是隐藏的。

我尝试只为 ACTION_CALL 注册 Activity ,但没有成功

最佳答案

Intent with action android.intent.action.CALL_PRIVILEGED 当您使用以下方式从电话簿调用电话时调用:电话簿->联系人->长按电话号码->从下拉菜单中选择调用电话。以下代码应放在 list 中:

<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 并通过这种方式拦截调用并继续由所选应用程序进行调用。

至于 android.intent.action.NEW_OUTGOING_CALL 它在 BroadcastReceivers 中使用,当你想收到有关拨出电话的通知时。例如,如果您想这样做,您应该将以下鳕鱼放入 list :

<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
....
}
}

使用此功能,您将在拨出电话时始终收到通知。

这个项目的主要区别是首先拦截 Intent ,然后只得到发生某事的结果。

关于android - 如何使用 android.intent.action.CALL_PRIVILEGED 和 android.intent.action.NEW_OUTGOING_CALL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8268763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com