Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加日历时出现Android异常_Android_Crash_Calendar_Provider - Fatal编程技术网

添加日历时出现Android异常

添加日历时出现Android异常,android,crash,calendar,provider,Android,Crash,Calendar,Provider,我在尝试向ContentProvider添加日历时遇到了一个奇怪的问题 它通常能正常工作,但我正在测试一台设备,但它不能——我崩溃了。 此设备:安卓4.0.4 API15平板电脑 我的一些代码: private static Uri buildCalUri() { return CalendarContract.Calendars.CONTENT_URI.buildUpon() .appendQueryParameter(CalendarContract.

我在尝试向ContentProvider添加日历时遇到了一个奇怪的问题

它通常能正常工作,但我正在测试一台设备,但它不能——我崩溃了。 此设备:安卓4.0.4 API15平板电脑

我的一些代码:

    private static Uri buildCalUri() {
    return CalendarContract.Calendars.CONTENT_URI.buildUpon()
            .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
            .appendQueryParameter(Calendars.ACCOUNT_NAME, ACCOUNT_NAME)
            .appendQueryParameter(Calendars.ACCOUNT_TYPE, ACCOUNT_TYPE).build();
}

private static ContentValues buildContentValues(CalendarData cd) {

    String dispName = cd.getName();
    String intName = INT_NAME_PREFIX + dispName;
    final ContentValues cv = new ContentValues();
    cv.put(Calendars.ACCOUNT_NAME, ACCOUNT_NAME);
    cv.put(Calendars.ACCOUNT_TYPE, ACCOUNT_TYPE);
    cv.put(Calendars.NAME, intName);
    cv.put(Calendars.CALENDAR_DISPLAY_NAME, dispName);
    cv.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_NONE );
    cv.put(Calendars.OWNER_ACCOUNT, ACCOUNT_NAME);
    cv.put(Calendars.VISIBLE, cd.isVisible() ? 1 : 0 );
    cv.put(Calendars.SYNC_EVENTS, 1 );
    return cv;
}

public static long addCalendar(Context context, final CalendarData cd,
        final ContentResolver cr) {
    if (cd == null)
        throw new IllegalArgumentException();

    /*
     * On Android < 4.1 create an account for our calendars. Using ACCOUNT_TYPE_LOCAL would
     * cause these bugs:
     * 
     * - On Android < 4.1: Selecting "Calendars to sync" in the calendar app it crashes with
     * NullPointerException. see http://code.google.com/p/android/issues/detail?id=27474
     * 
     * - On Android <= 2.3: Opening the calendar app will ask to create an account first even
     * when local calendars are present
     */

    long calID;
    // Add calendar
    final ContentValues cv = buildContentValues(cd);
    Uri uri = cr.insert( buildCalUri(), cv );

    calID = Long.parseLong( uri.getLastPathSegment() );

    return calID; 
}
第128行CalendarMapper是: Uri=cr.insert buildCalUri,cv

我真的不知道是什么导致了这个例外。。 有什么想法吗


提前谢谢

您需要为此使用AsycTask。请向我们展示一些代码。

BuildCallURI和buildContentValues的列不匹配,请向builCalURI添加更多查询参数,并确保它们与ContentValues匹配。

您的代码在哪里?发布类CalendarMapper.java的第128行。我更新了下面的帖子
E/AndroidRuntime( 3221): FATAL EXCEPTION: AsyncTask #3
E/AndroidRuntime( 3221): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime( 3221): at android.os.AsyncTask$3.done(AsyncTask.java:278)
E/AndroidRuntime( 3221): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
E/AndroidRuntime( 3221): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
E/AndroidRuntime( 3221): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
E/AndroidRuntime( 3221): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
E/AndroidRuntime( 3221): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
E/AndroidRuntime( 3221): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
E/AndroidRuntime( 3221): at java.lang.Thread.run(Thread.java:856)
E/AndroidRuntime( 3221): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 3221): at android.os.Parcel.readException(Parcel.java:1333)
E/AndroidRuntime( 3221): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182)
E/AndroidRuntime( 3221): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
E/AndroidRuntime( 3221): at android.content.ContentProviderProxy.insert(ContentProviderNative.java:415)
E/AndroidRuntime( 3221): at android.content.ContentResolver.insert(ContentResolver.java:733)
E/AndroidRuntime( 3221): at com.my.app.CalendarMapper.addCalendar(CalendarMapper.java:128)