我有一个PhoneGap应用程序,我想通过内容提供商访问Android日历。我的PhoneGap JavaScript函数可以成功调用和返回Java函数,但是我无法让Content Provider调用工作。该应用程序编译没有问题并运行,但一旦我调用相关的内容提供程序功能,它会挂起一段时间并崩溃。以下是我发现的内容提供商功能的修改版本: 包com.george.myapp;
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 :(得分:0)
我会按照此官方文档处理Android中的日历内容提供商:http://developer.android.com/guide/topics/providers/calendar-provider.html
答案 1 :(得分:0)
看起来Context是问题,需要来自主要活动,认为Android只授予该活动的权限
答案 2 :(得分:0)
您必须将权限READ_CALENDAR添加到AndroidManifest.xml文件。