让我的应用程序接收电话通知

时间:2018-04-27 14:47:59

标签: android permissions notifications

我的应用需要知道用户是否是最新的电话,然后做出相应的响应。

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

我该怎么做才能做到这一点?我是否需要获得用户的许可?enter code here

1 个答案:

答案 0 :(得分:0)

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

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

您应该将Broadcast Receiver与此意图过滤器一起使用。 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>