android - 让我的应用收到电话通知
问题描述
我的应用需要知道用户是否正在通话,然后做出相应的响应。
我只需要知道用户是否正在打电话。我不需要任何其他权利来处理与电话号码或用户的任何个人信息有关的任何事情。
我应该怎么做才能实现这一目标?我需要获得用户的许可吗?enter code here
解决方案
是 首先将这些权限添加到您的清单中:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
您应该使用带有此意图过滤器的广播接收器。android.intent.action.NEW_OUTGOING_CALL android.intent.action.NEW_INCOMING_CALL 你可以使用这个寄存器的服务。像这样的东西:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
registerReceiver(receiver,new IntentFilter("android.intent.action.NEW_OUTGOING_CALL"));
registerReceiver(receiver2,new IntentFilter("android.intent.action.NEW_INCOMING_CALL"));
return START_STICKY;
}
您可以使用我们的广播接收器:
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//
RequestQueue
String savedNumber="";
String savedNumber2= intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) {
savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
}
Log.e("Saved number","Numara: "+savedNumber);
Log.e("İt is ","İt is it");
Log.e("Saved number 2 ",savedNumber2);
}
}
最后,在您的清单文件中,您可以在接收器中使用意图过滤器,如下所示:
<receiver
android:name=".CallReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
推荐阅读
- android - Firebase Real Time Database confusion
- swift - Swift 5:为什么选择 Range
.Bound.utf16Offset 即使提供空字符串作为参数也会计算偏移量 - php - 在 Woocommerce 中更改“您不能将另一个(产品)添加到您的购物车”通知
- ubuntu - Nginx 在 Ubuntu 上返回 404?
- php - 如何从源代码中提取函数调用中的参数?
- html - 需要 Reactjs 路由格式
- c# - 如何在 EVAL Listview 上使用 IF 语句
- ssl - 使用 WinInet 的客户端身份验证(证书 + 私钥)
- python - 如何获得图像的主要颜色?
- javascript - jquery-modal 中的 Javascript 不起作用 - Laravel