首页 > 解决方案 > 让我的应用收到电话通知

问题描述

我的应用需要知道用户是否正在通话,然后做出相应的响应。

我只需要知道用户是否正在打电话。我不需要任何其他权利来处理与电话号码或用户的任何个人信息有关的任何事情。

我应该怎么做才能实现这一目标?我需要获得用户的许可吗?enter code here

标签: androidpermissionsnotifications

解决方案


是 首先将这些权限添加到您的清单中:

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

推荐阅读