繁体   English   中英

如何将datepicker对话框中的选定日期传递给Cursor

[英]how to pass selected Date in datepickerdialog in to Cursor

我正在编写代码,以使用Datepicker对话框在选定的日期获取未接来电列表。 我正在使用按钮显示所选日期。 我能够获取未接来电列表并能够选择日期,但是我不确定如何将所选日期传递到Cursor查询中以获取该日期的未接来电列表。

public class missnew extends ActionBarActivity implements View.OnClickListener,DatePickerDialog.OnDateSetListener,SwipeRefreshLayout.OnRefreshListener{

private int day;
private int month;
private int year;
private Calendar calender;
private Button button;
private TextView textView;
private ScrollView scrollview;
private DatePickerDialog datePickerDialog;
private SwipeRefreshLayout swipeRefreshLayout;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_missnew);

    button = (Button)findViewById(R.id.button);
    textView = (TextView)findViewById(R.id.textview);
    scrollview = (ScrollView)findViewById(R.id.scrollView);

    swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipe);
    swipeRefreshLayout.setOnRefreshListener(this);
    //swipeRefreshLayout.setColorSchemeColors(android.R.color.holo_blue_bright, android.R.color.holo_green_light,
           // android.R.color.holo_orange_light, android.R.color.holo_red_light);

    swipeRefreshLayout.setDistanceToTriggerSync(20);
    swipeRefreshLayout.setSize(1);


    calender = Calendar.getInstance(Locale.getDefault());

    button.setOnClickListener(this);

    day=calender.get(Calendar.DAY_OF_MONTH);
    month=calender.get(Calendar.MONTH);
    year=calender.get(Calendar.YEAR);

    setupdate(day, month, year);

    // calender.set(year,month,day);
    //String fromDate = String.valueOf(calender.getTimeInMillis());
    getCallDetails();
}

private void getCallDetails()
{

    StringBuffer sb = new StringBuffer();
    String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
    String Fdate = (day+"-"+(month+1) +"-"+year);
   // String selection = CallLog.Calls.DATE + ">?", new String[] { String.valueOf(Fdate.getBytes())};
    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyy");


   // Long l = Long.parseLong(Fdate);


    Cursor managedCursor = getContentResolver().
            query(
                    android.provider.CallLog.Calls.CONTENT_URI,
                    null,
                    null,
                    null,
                    strOrder);
    sb.append("Missed Calls :");


    while (managedCursor.moveToNext())
    {
        String phNumber = managedCursor.getString(managedCursor.getColumnIndex(CallLog.Calls.NUMBER));
        String callType = managedCursor.getString(managedCursor.getColumnIndex(CallLog.Calls.TYPE));
        String callDate = managedCursor.getString((managedCursor.getColumnIndex(CallLog.Calls.DATE)));
        String callname= managedCursor.getString(managedCursor.getColumnIndex(CallLog.Calls.CACHED_NAME));

        Date callDayTime = new Date(Long.valueOf(callDate));
        String Tdate=formatter.format(callDayTime);

        String dir = null;
        int dircode = Integer.parseInt(callType);


        if(dircode==CallLog.Calls.MISSED_TYPE){

        sb.append("\nPhone Number:--- " + phNumber  +
                " \nCall Date:--- " + l + "\nName:---" +callname);
        sb.append("\n----------------------------------"); }
    }//managedCursor.close();

    textView.setText(sb);
}





private void setupdate(int day, int month, int year) {

    button.setText(String.valueOf(day) + "/" + String.valueOf(month + 1) + "/" +String.valueOf(year));


}


@Override
public void onClick(View v) {

    switch (v.getId()){
        case R.id.button:
            showdate();
            break;
        default:
            //do nothing
            break;
    }

}

private void showdate() {
    datePickerDialog = new DatePickerDialog(
            this
            ,missnew.this
            ,year
            ,month
            ,day);
    datePickerDialog.show();
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    setupdate(year,monthOfYear,dayOfMonth);


}

@Override
public void onRefresh() {
    (new Handler()).postDelayed(new Runnable() {
        @Override
        public void run() {
            swipeRefreshLayout.setRefreshing(false);
            getCallDetails();
        }
    }, 5000);

    }
}

用它来获取基于日期的呼叫清单。 我只是按照你的代码写,

String dateText = button.getText(); // Time in millsec

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); // assuming date text is in "MM/dd/yyyy" format and I'm doing this.
Date date = sdf.parse(dateText);  


Cursor c = contentResolver.query(CallLog.Calls.CONTENT_URI,
                null,
                CallLog.Calls.DATE + ">?",
                new String[] { String.valueOf(date.getTime())},
                strOrder);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM