2013-05-22 155 views
0

我是Android開發新手。我正在使用PhoneGap進行Android開發。我正在創建一個CalendarEvent插件並獲取以下錯誤。我不知道爲什麼會發生此錯誤。無法創建科爾多瓦插件

 
05-21 22:39:12.171: W/dalvikvm(516): VFY: unable to resolve direct method 345: 
Landroid/webkit/WebView;. (Landroid/content/Context;Landroid/util/AttributeSet;IZ)V 

這是JavaScript代碼:

window.createEvent = function(title, location, description, startDate, endDate) { 
    return cordova.exec(function(arg){}, function(error){}, 'CalendarPlugin', 'createEvent', 
      [title, location, description, startDate, endDate]); 
}; 

var title = "Test Event"; 
var location = "Nashville, TN"; 
var description = "Very interesting event."; 
var startDateTime = "2015-09-09T16:00:00-06:00"; // ISO 8601 date 
var endDateTime = "2015-09-09T18:00:00-06:00"; 

window.createEvent(title, location, description, startDateTime, endDateTime); 

這是插件代碼:

package com.redobot.plugin; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Locale; 
import java.util.TimeZone; 

import org.apache.cordova.api.Plugin; 
import org.apache.cordova.api.PluginResult; 
import org.json.JSONArray; 
import org.json.JSONException; 

import android.content.Intent; 
import android.provider.CalendarContract.Events; 

public class CalendarPlugin extends Plugin { 
    final static String ISO8601DATEFORMAT = "yyyy-MM-dd'T'HH:mm:ssZ"; 

    @Override 
    public PluginResult execute(String action, JSONArray args, final String callbackId) { 
     if (action.equals("createEvent")) { 
      try { 
       this.createEvent(args.getString(0), args.getString(1), args.getString(2), args.getString(3), args.getString(4)); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return new PluginResult(PluginResult.Status.OK, true); 
     } 
     return new PluginResult(PluginResult.Status.OK, false); 
    } 

    private void createEvent(String title, String location, String description, String startDate, String endDate){ 
     Calendar calendarStart = CalendarPlugin.getCalendarFromISO(startDate); 
     Calendar calendarEnd = CalendarPlugin.getCalendarFromISO(endDate); 

     Intent intent = new Intent(Intent.ACTION_EDIT); 
     intent.setType("vnd.android.cursor.item/event"); 
     intent.putExtra(Events.TITLE, title); 
     intent.putExtra(Events.EVENT_LOCATION, location); 
     intent.putExtra(Events.DESCRIPTION, description); 
     intent.putExtra("beginTime", calendarStart.getTimeInMillis()); 
     intent.putExtra("endTime", calendarEnd.getTimeInMillis()); 

     this.cordova.getActivity().startActivity(intent); 
    } 

    public static Calendar getCalendarFromISO(String dateString) { 
     dateString = dateString.trim().replaceAll(":00$", "00"); // Changing format for SimpleDateFormat 

     Calendar calendar = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault()); 
     SimpleDateFormat dateformat = new SimpleDateFormat(ISO8601DATEFORMAT, Locale.getDefault()); 

     try { 
      Date date = dateformat.parse(dateString); 
      calendar.setTime(date); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return calendar; 
    } 
} 

請告訴我在哪裏錯了。我搜索了,但無法得到任何有用的幫助。

回答

0

我使用運行Android 4.2.2的Nexus 7設備測試此代碼,方法是創建一個Cordova 2.6應用並運行它,並且一切正常。我不得不將這添加到我的config.xml:<plugin name="CalendarPlugin" value="com.redobot.plugin.CalendarPlugin" />並在onDeviceReady()檢查中添加代碼,但除此之外,沒有問題。

相關問題