2012-02-02 50 views
0

我有一个PhoneGap应用程序,我想通过Content Provider访问Android日历。我的PhoneGap JavaScript函数可以成功调用并返回Java函数,但是我只是无法让Content Provider调用工作。该应用程序编译没有问题,并运行,但只要我打电话给相关的内容提供者功能它挂了一段时间,崩溃。以下是我发现的Content Provider功能的修改版本: package com.george.myapp;Android日历内容提供者查询不断崩溃

import java.util.Calendar; 
import java.util.Date; 
import java.util.GregorianCalendar; 
import java.util.TimeZone; 

import android.app.Activity; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class EventsInCalender extends Activity { 
    //@Override 
    public void onCreate() { 
    //public void onCreate(Bundle savedInstanceState) { 
     //super.onCreate(savedInstanceState); 
     //setContentView(R.layout.event);  
    } 

    public String getCal() 
    { 
     String cal_name = "createdstring"; 
     Cursor cursor = getContentResolver().query(Uri.parse("content://com.android.calendar/calendars"),new String[] { "_id", "displayName" }, "selected=1", null, null); 
     if (cursor != null && cursor.moveToFirst()) { 
      String[] calNames = new String[cursor.getCount()]; 
      int[] calIds = new int[cursor.getCount()]; 
      for (int i = 0; i < calNames.length; i++) { 
        // retrieve the calendar names and ids     
        calIds[i] = cursor.getInt(0); 
        calNames[i] = cursor.getString(1); 
        cursor.moveToNext(); 
       } 
       cal_name = calNames[0]; 
       cursor.close(); 
     } 
     return cal_name; 
    } 
} 

回答

0

我会按照这个官方文档处理日历内容提供商的Android:http://developer.android.com/guide/topics/providers/calendar-provider.html

  1. 查询日历
  2. 选择日历
  3. 查询事件
+0

谢谢,我已经通过了,但我看到使用sdk android:minSdkVersion =“14”,我知道有应用程序访问旧版SDK的日历,有什么建议吗? – 2012-02-03 08:07:05

+0

谷歌不建议在API版本14下使用任何日历,因此我不明白为什么开发者会选择使用这些黑客。恕我直言,他们只是带来更多的问题和头痛。 – dmaxi 2012-02-03 17:31:52

+0

访问API版本14之前的日历的应用程序要么手动读取本地数据库以获取日历事件(hacky),要么可能使用Google的日历Web服务 – 2012-04-12 07:49:40

0

貌似上下文是来自主要活动需要的问题,认为Android只有Gran对该活动的权限

0

您必须将权限READ_CALENDAR添加到AndroidManifest.xml文件。