/** * */ package com.phonegap.plugins; import java.util.Calendar; import java.util.Date; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.TimePickerDialog; import android.app.TimePickerDialog.OnTimeSetListener; import android.content.Context; import android.util.Log; import android.widget.DatePicker; import android.widget.TimePicker; import org.apache.cordova.api.CallbackContext; import org.apache.cordova.api.CordovaPlugin; /** * @author ng4e * @author Daniel van 't Oever * * Rewrote plugin so it it similar to the iOS datepicker plugin and it * accepts prefilled dates and time */ public class DatePickerPlugin extends CordovaPlugin { private static final String ACTION_DATE = "date"; private static final String ACTION_TIME = "time"; private final String pluginName = "DatePickerPlugin"; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { Log.d(pluginName, "DatePicker called with options: " + args); return this.show(args, callbackContext); } public synchronized boolean show(final JSONArray data, final CallbackContext callbackContext) { final Calendar c = Calendar.getInstance(); final Runnable runnable; final Context currentCtx = cordova.getActivity(); final DatePickerPlugin datePickerPlugin = this; String action = "date"; /* * Parse information from data parameter and where possible, override * above date fields */ int month = -1, day = -1, year = -1, hour = -1, min = -1; try { JSONObject obj = data.getJSONObject(0); action = obj.getString("mode"); String optionDate = obj.getString("date"); String[] datePart = optionDate.split("/"); month = Integer.parseInt(datePart[0]); day = Integer.parseInt(datePart[1]); year = Integer.parseInt(datePart[2]); hour = Integer.parseInt(datePart[3]); min = Integer.parseInt(datePart[4]); /* currently not handled in Android */ // boolean optionAllowOldDates = obj.getBoolean("allowOldDates"); } catch (JSONException e) { e.printStackTrace(); } // By default initalize these fields to 'now' final int mYear = year == -1 ? c.get(Calendar.YEAR) : year; final int mMonth = month == -1 ? c.get(Calendar.MONTH) : month - 1; final int mDay = day == -1 ? c.get(Calendar.DAY_OF_MONTH) : day; final int mHour = hour == -1 ? c.get(Calendar.HOUR_OF_DAY) : hour; final int mMinutes = min == -1 ? c.get(Calendar.MINUTE) : min; if (ACTION_TIME.equalsIgnoreCase(action)) { runnable = new Runnable() { public void run() { final TimeSetListener timeSetListener = new TimeSetListener(datePickerPlugin, callbackContext); final TimePickerDialog timeDialog = new TimePickerDialog(currentCtx, timeSetListener, mHour, mMinutes, true); timeDialog.show(); } }; } else if (ACTION_DATE.equalsIgnoreCase(action)) { runnable = new Runnable() { public void run() { final DateSetListener dateSetListener = new DateSetListener(datePickerPlugin, callbackContext); final DatePickerDialog dateDialog = new DatePickerDialog(currentCtx, dateSetListener, mYear, mMonth, mDay); dateDialog.show(); } }; } else { Log.d(pluginName, "Unknown action. Only 'date' or 'time' are valid actions"); return false; } cordova.getActivity().runOnUiThread(runnable); return true; } private final class DateSetListener implements OnDateSetListener { private final DatePickerPlugin datePickerPlugin; private final CallbackContext callbackContext; private DateSetListener(DatePickerPlugin datePickerPlugin, CallbackContext callbackContext) { this.datePickerPlugin = datePickerPlugin; this.callbackContext = callbackContext; } /** * Return a string containing the date in the format YYYY/MM/DD */ public void onDateSet(final DatePicker view, final int year, final int monthOfYear, final int dayOfMonth) { String returnDate = year + "/" + (monthOfYear + 1) + "/" + dayOfMonth; callbackContext.success(returnDate); } } private final class TimeSetListener implements OnTimeSetListener { private final DatePickerPlugin datePickerPlugin; private final CallbackContext callbackContext; private TimeSetListener(DatePickerPlugin datePickerPlugin, CallbackContext callbackContext) { this.datePickerPlugin = datePickerPlugin; this.callbackContext = callbackContext; } /** * Return the current date with the time modified as it was set in the * time picker. */ public void onTimeSet(final TimePicker view, final int hourOfDay, final int minute) { Date date = new Date(); date.setHours(hourOfDay); date.setMinutes(minute); callbackContext.success(date.toLocaleString()); } } }
最近下载更多
chenflin LV4
2018年8月13日
byj1987 LV18
2016年8月15日
Maybe LV14
2015年11月13日
a531246041 LV1
2015年3月12日
jhzjameway LV2
2014年12月2日
whwei_2008 LV3
2014年11月28日
luobotecc LV1
2014年5月14日
headshot9999 LV1
2014年5月13日
zhaohu086 LV1
2013年11月6日
javaniu-小锋 LV9
2013年10月23日