【问题标题】:How do I call a number from call log如何拨打通话记录中的号码
【发布时间】:2018-08-13 13:48:31
【问题描述】:

我需要帮助才能拨打通话记录中的号码。我需要让用户能够点击其中一个号码并拨打该号码。我想我需要制作一个数组,但我真的不知道,或者这些数字应该变成链接?

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);
    }
}

【问题讨论】:

    标签: android call phone-call calllog


    【解决方案1】:

    将这些属性添加到显示电话号码的call TextView:

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

    并且数字将具有链接颜色,当您单击该数字时,您将启动拨号应用程序。


    call.setText(sb);
    call.setLinkTextColor(Color.RED);
    Linkify.addLinks(call, Linkify.PHONE_NUMBERS);
    

    【讨论】:

    • 这不是文本视图吗?
    • 是的!它看起来像这样。 <TextView android:id="@+id/call" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:autoLink="phone" android:linksClickable="true"> </TextView>
    • 不,他们不是:/
    • 代替 xml 中的 TextView 试试 android.support.v7.widget.AppCompatTextView
    • 很抱歉占用您的时间,但我仍然没有得到任何链接,
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多