Как позвонить по номеру из журнала звонков

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

public class MainActivity extends AppCompatActivity {

    TextView call;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        call = (TextView)findViewById(R.id.call); //finds textview
        getCallDetails();
        final TextView dialers=(TextView)this.findViewById(R.id.call);
        dialers.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Intent.ACTION_DIAL,
                        Uri.parse("tel://"+ dialers.getText().toString().trim())));
            }
        });

    }
    private void getCallDetails() {

        StringBuffer sb = new StringBuffer();
        Cursor managedCursor = managedQuery( CallLog.Calls.CONTENT_URI,null, null,null, null);
        int number = managedCursor.getColumnIndex( CallLog.Calls.NUMBER );
        int type = managedCursor.getColumnIndex( CallLog.Calls.TYPE );
        int date = managedCursor.getColumnIndex( CallLog.Calls.DATE);
        int duration = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
        sb.append( "Call Details :");
        while ( managedCursor.moveToNext() ) {
            String phNumber = managedCursor.getString( number );
            String callType = managedCursor.getString( type );
            String callDate = managedCursor.getString( date );
            Date callDayTime = new Date(Long.valueOf(callDate));
            String callDuration = managedCursor.getString( duration );
            String dir = null;


            int dircode = Integer.parseInt( callType );
            switch( dircode ) {
                case CallLog.Calls.OUTGOING_TYPE:
                    dir = "OUTGOING";
                    break;
                    //gets outcoming calls

                case CallLog.Calls.INCOMING_TYPE:
                    dir = "INCOMING";
                    break;
                    //gets incoming calls

                case CallLog.Calls.MISSED_TYPE:
                    dir = "MISSED";
                    break;

            }
            sb.append( "\nPhone Number:--- "+phNumber +" \nCall Type:--- "+dir+" \nCall Date:--- "+callDayTime+" \nCall duration in sec :--- "+callDuration );
            sb.append("\n----------------------------------");


        }
        managedCursor.close();
        call.setText(sb);
    }
}

1 ответ

Решение

Добавьте эти атрибуты в call TextView, где вы показываете номера телефонов:

            android:autoLink="phone"
            android:linksClickable="true"

и номера будут иметь цвет ссылки, и когда вы нажмете на номер, вы запустите приложение набора номера.

или же

call.setText(sb);
call.setLinkTextColor(Color.RED);
Linkify.addLinks(call, Linkify.PHONE_NUMBERS);
Другие вопросы по тегам