Сохраните номер телефона с пользовательской меткой в ​​журнале звонков, а затем позвоните в мое приложение - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть приложение, которое использует библиотеку Agora для облегчения видеочата между двумя сторонами.

Я хочу сохранить номер, который звонит, в журнале вызовов телефона, а затем, когда пользователь входит в журнал звонков и нажимает на этот номер, этот номер будет передан в мое приложение и использован внутри моего приложение для вызова соответствующего пользователя.

Вот как я сейчас регистрирую номер, на который звонит пользователь:

@Override
        public void onInviteReceived(final String channelName, final String contactPhone, int uid, final String s2) { //call out other remote receiver
            Log.i(TAG, "onInviteReceived  channelName = " + channelName + " contactPhone = " + contactPhone);
            runOnUiThread(new Runnable() {
                @SuppressLint("MissingPermission")
                @Override
                public void run() {
                    Gson gson = new Gson();
                    CallExtra callExtra = gson.fromJson(s2, CallExtra.class);

                    ContentValues values = new ContentValues();
                    values.put(CallLog.Calls.CACHED_NUMBER_LABEL, "FairyApp");
                    values.put(CallLog.Calls.CACHED_NAME, "FairyApp");
                    values.put(CallLog.Calls.TYPE, CallLog.Calls.INCOMING_TYPE);
                    values.put(CallLog.Calls.DATE, System.currentTimeMillis());
                    values.put(CallLog.Calls.DURATION, 50);
                    values.put(CallLog.Calls.NUMBER, contactPhone);

                    getContentResolver().insert(CallLog.Calls.CONTENT_URI, values);

Как вы можете видеть, я просто жестко закодировал информацию, чтобы посмотреть, работает ли она, и действительно ли она работает - номер записывается в журнал вызовов телефона (очевидно, я позаботился о разрешениях, чтобы сделать это уже).

Затем я создал широковещательный приемник, который перехватывает намерение типа android.intent.action.NEW_OUTGOING_CALL, чтобы перехватить пользователя, вызывающего этот номер, и перенаправить его в мое приложение, а затем инициировать вызов оттуда.

Вот как выглядит Broadcast Receiver в AndroidManifest:

<receiver android:name=".broadcastreceivers.OutgoingCallReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
</receiver>

Вот что сейчас делает Приемник (на данный момент он жестко запрограммирован):

public class OutgoingCallReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
    if (phoneNumber.equals("4444")){
        context.startActivity(new Intent(context, HomeActivity.class));
    }
}

}

Таким образом, он в основном перехватывает намерение позвонить, получает номер телефона, и если номер телефона «4444», то он входит в мою HomeActivity.

Это работает.

Проблема в том, что я пытаюсь сохранить «метку» для сохраненного номера - я хочу сохранить информацию о том, что «этот номер имеет тип« MyApp »», а затем, когда пользователь нажимает для вызова этого номер из журнала вызовов телефона, я хочу использовать эту информацию в моем Broadcast Receiver и проверить «если это тип« MyApp », то откройте мой HomeActivity, иначе просто игнорируйте эту трансляцию».

Итак, мой вопрос - как мне сохранить метку в журнале вызовов или какую-то пользовательскую информацию, которую я затем могу использовать в моем Broadcast Receiver для идентификации вызовов, которые «принадлежат» моему приложению?

Спасибо.

...