我正在尝试更新日历中的活动,但我无法更新更新查询中显示错误的日历
在这一行
int rows= getContentResolver().update(updateUri, event, null, null);//(Status_Check.java:242)
和
UpdateCalendarEvent(jsonArray_Update);//(Status_Check.java:66)
我能够从php获取数据并且我将它们放入吐司中并且日期正在接收并且在for循环中我也测试了它正在工作但是我无法更新显示错误的事件
logcat的
03-16 13:20:49.659 17919-17919/com.example.calenderscheduler E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.calenderscheduler, PID: 17919
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.calenderscheduler/com.example.calenderscheduler.Status_Check}: android.database.sqlite.SQLiteException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.database.sqlite.SQLiteException
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:179)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.update(ContentProviderNative.java:568)
at android.content.ContentResolver.update(ContentResolver.java:1362)
at com.example.calenderscheduler.Status_Check.UpdateCalendarEvent(Status_Check.java:242)
at com.example.calenderscheduler.Status_Check.onCreate(Status_Check.java:66)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
以这种方式我正在更新日期
package com.example.calenderscheduler;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.net.Uri;
import android.provider.CalendarContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Status_Check extends AppCompatActivity {
JSONArray jsonArray_New=null,jsonArray_Update=null;
Context context;
JSONArray New_send,Update_send;
JSONArray new_sch = null;
JSONArray upt_sch = null;
String[] day, month, year, Hours, Endtime, StartTime, schedule_id, Employee_id, Event_id;
String Shours;
String Sminutes;
String Ssecond;
String Ehours;
String Eminutes;
String Esecond;
String Eampm;
String Sampm;
String Name;
String Password;
String Token;
JSONArray WC, US, NS;
int s, mo, L;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_status__check);
String jsonString = getIntent().getStringExtra("rootJson");
String data = "";
try {
JSONObject jsonObjects = new JSONObject(jsonString);
jsonArray_New = jsonObjects.getJSONArray("NEW_SCHEDULE");
Toast.makeText(Status_Check.this, "jsonArray_New"+jsonArray_New, Toast.LENGTH_LONG).show();
}catch (JSONException e) {e.printStackTrace();}
try {
JSONObject jsonObjects = new JSONObject(jsonString);
jsonArray_Update = jsonObjects.getJSONArray("UPDATE_SCHEDULE");
Toast.makeText(Status_Check.this, "jsonArray_Update"+jsonArray_Update, Toast.LENGTH_LONG).show();
UpdateCalendarEvent(jsonArray_Update);
}catch (JSONException e) {e.printStackTrace();}
}
private void UpdateCalendarEvent(JSONArray jsonArray_update) {
JSONArray jsonArray;
jsonArray=jsonArray_update;
Toast.makeText(Status_Check.this, "jsonArray"+jsonArray.length(), Toast.LENGTH_LONG).show();
try
{
// initialized the array
schedule_id=new String[jsonArray.length()];
year = new String[jsonArray.length()];
month = new String[jsonArray.length()];
day = new String[jsonArray.length()];
StartTime = new String[jsonArray.length()];
Endtime = new String[jsonArray.length()];
Hours = new String[jsonArray.length()];
Employee_id = new String[jsonArray.length()];
Event_id = new String[jsonArray.length()];
//for loop execution to set the multiple data for particular user
for( L=0; L < jsonArray.length(); L++)
{
JSONObject jsonObject = jsonArray.getJSONObject(L);
schedule_id[L]= jsonObject.getString("Schedule_id");
year[L]= jsonObject.getString("Year");
month[L] = jsonObject.getString("Month");
day[L] = jsonObject.getString("Day");
StartTime[L] = jsonObject.getString("StartTime");
Endtime[L] = jsonObject.getString("Endtime");
Hours[L] = jsonObject.getString("Hours");
Employee_id[L] = jsonObject.getString("Employee_id");
Event_id[L] = jsonObject.getString("Event_id");
final ContentValues event = new ContentValues();
event.put(CalendarContract.Events.CALENDAR_ID, 1);
event.put(CalendarContract.Events.TITLE, "WORKING SCHEDULE OF THE WEEK");
event.put(CalendarContract.Events.DESCRIPTION, "selva");
event.put(CalendarContract.Events.EVENT_LOCATION, "chennai");
long startMillis = 0;
long endMillis = 0;
try
{
//seperating the time into hh/mm/ss
String StartsTime = StartTime[L];
DateFormat sdf = new SimpleDateFormat("hh:mm aa");
Date date = null;
date = sdf.parse(StartsTime);
SimpleDateFormat sdfH = new SimpleDateFormat("hh");
Shours = sdfH.format(date);
SimpleDateFormat sdfM = new SimpleDateFormat("mm");
Sminutes = sdfM.format(date);
SimpleDateFormat sdfS = new SimpleDateFormat("ss");
Ssecond = sdfS.format(date);
SimpleDateFormat sdfA = new SimpleDateFormat("aa");
Sampm = sdfA.format(date);
} catch (ParseException e)
{
e.printStackTrace();
}
//check the given time is am/pm for start time
if(Sampm.equals("AM")||Sampm.equals("am"))
{
s=0;
}
if(Sampm.equals("PM")||Sampm.equals("pm"))
{
s=1;
}
//setting the values for calender instance in integer format for start time
Integer i = Integer.parseInt(year[L]);
Integer j = Integer.parseInt(month[L]);
Integer k = Integer.parseInt(day[L]);
Integer l = Integer.parseInt(Shours);
Integer m = Integer.parseInt(Sminutes);
Integer n = Integer.parseInt(Ssecond);
mo=j-1;
//checking the month and setting them to correct month in calender
int smonth=mo;
int syear=i;
int sdate=k;
int shour=l;
int sminute=m;
int sseconds=n;
int smilli=0;
//setting the values for calender instance
Calendar beginTime = Calendar.getInstance();
beginTime.set(Calendar.DATE,sdate);
beginTime.set(Calendar.HOUR, shour);
beginTime.set(Calendar.MINUTE, sminute);
beginTime.set(Calendar.SECOND, sseconds);
beginTime.set(Calendar.MILLISECOND, smilli);
beginTime.set(Calendar.MONTH, smonth);
beginTime.set( Calendar.AM_PM,s);
beginTime.set(Calendar.YEAR, syear);
startMillis = beginTime.getTimeInMillis();
//seperating the string time into hours,minutes,seconds,am/pm for end time
try
{
String StartsTime = Endtime[L];
DateFormat sdf = new SimpleDateFormat("hh:mm aa");
Date date = null;
date = sdf.parse(StartsTime);
SimpleDateFormat sdfH = new SimpleDateFormat("hh");
Ehours = sdfH.format(date);
SimpleDateFormat sdfM = new SimpleDateFormat("mm");
Eminutes = sdfM.format(date);
SimpleDateFormat sdfS = new SimpleDateFormat("ss");
Esecond = sdfS.format(date);
SimpleDateFormat sdfA = new SimpleDateFormat("aa");
Eampm = sdfA.format(date);
//check the given time is am/pm for start time
if(Eampm.equals("AM")||Eampm.equals("am"))
{
s=0;
}
if(Eampm.equals("PM")||Eampm.equals("pm"))
{
s=1;
}
} catch (ParseException e)
{
e.printStackTrace();
}
//setting the values for calender instance in integer format for start time
Integer A = Integer.parseInt(Ehours);
Integer B = Integer.parseInt(Eminutes);
Integer C = Integer.parseInt(Esecond);
int emonth=mo;
int eyear=i;
int edate=k;
int ehour=A;
int eminute=B;
int eseconds=C;
int emilli=0;
//setting the values for calender instance
Calendar endTime = Calendar.getInstance();
endTime.set(Calendar.DATE,edate);
endTime.set(Calendar.HOUR, ehour);
endTime.set(Calendar.MINUTE, eminute);
endTime.set(Calendar.SECOND, eseconds);
endTime.set(Calendar.MILLISECOND, emilli);
endTime.set(Calendar.MONTH, emonth);
endTime.set(Calendar.YEAR, eyear);
endTime.set(Calendar.AM_PM, s);
endMillis = endTime.getTimeInMillis();
//creating event for calendar for end time
event.put(CalendarContract.Events.DTSTART, startMillis);
event.put(CalendarContract.Events.DTEND, endMillis);
event.put(CalendarContract.Events.ALL_DAY, 0); // 0 for false, 1 for true
event.put(CalendarContract.Events.HAS_ALARM, 1); // 0 for false, 1 for true
String timeZone = TimeZone.getDefault().getID();
event.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone);
//making connection with pre-installed calender
Uri updateUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, Long.parseLong(Event_id[L]));
int rows= getContentResolver().update(updateUri, event, null, null);
}//end of for loop
Toast.makeText(getApplicationContext(), " Schedule Updated", Toast.LENGTH_SHORT).show();
} catch (JSONException e) {e.printStackTrace();}
}
}
任何人帮我解决这个问题。请!!