2011-03-03 45 views
1

你好H 我是新到Android .. 我有三星Galaxy 3和安装在它的Android 2.1 .. 我想如下建立一个插件..日历,触发web服务在android系统

访问

1.我想访问电话的日历..(谷歌搜索了很多发现不同的答案,但没有wokrin ..)(jimblackler.net/blog/?p=151不工作).. 因为没有公共的API可用它会即使我能够使用谷歌日历(网络上的日历),也可以。让我们知道哪一个更容易实现。我只想阅读活动..

2.如何在特定时间触发事件..说它是3:00小时它应该调用一个函数.. 这可能吗?如果是的话

3.我想发送两个字符串到服务器,并收到其他文本作为结果。这将是最简单的代码方式?有一个C#的Web服务..?或者只是在服务器上使用php脚本接受少量参数?

非常感谢。 :)

回答

0

第一个问题:日历访问:这是基于内容://日历/日历URI。 首先,确保您的应用程序定义了权限android.permission.READ_CALENDAR。

获取日历ID和显示名称:在一个特定的日历

ContentResolver myContentResolver = getContentResolver(); 

final Cursor cursor = myContentResolver.query(Uri.parse("content://calendar/calendars"), 
     (new String[] { "_id", "displayName", "selected" }), null, null, null); 

while (cursor.moveToNext()) { 

    final String _id = cursor.getString(0); 
    final String displayName = cursor.getString(1); 
    final Boolean selected = !cursor.getString(2).equals("0"); 
} 

工作:

Uri.Builder myUriBuilder = Uri.parse("content://calendar/instances/when").buildUpon(); 
long currentTime = new Date().getTime(); 
ContentUris.appendId(myUriBuilder , currentTime - DateUtils.WEEK_IN_MILLIS); 
ContentUris.appendId(myUriBuilder, currentTime + DateUtils.WEEK_IN_MILLIS); 

Cursor eventCursor = myContentResolver.query(myUriBuilder.build(), 
     new String[] { "title", "begin", "end", "allDay"}, "Calendars._id=" + id, 
     null, "startDay ASC, startMinute ASC"); 

while (eventCursor.moveToNext()) { 
    // fields: 
    // Event title - String - 0 
    String eventTitle = eventCursor.getString(0); 
    // Event start time - long - 1 
    Date startTime = new Date(eventCursor.getLong(1)); 
    // Event end time - login - 2 
    Date endTime = new Date(eventCursor.getLong(2)); 
    // Is it an All Day Event - String - 3 (0 is false, 1 is true) 
    Boolean allDay = !eventCursor.getString(3).equals("0"); 

} 


第二个问题:调度活动: 基本上,你应该使用AlarmManager类,有关详细信息,请参阅android SDK。 例,从现在设定的事件3时间:

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.HOUR, 3); 
Intent intent = new Intent(this, MyAlarmHandler.class); 
intent.putExtra("alarm_message", "Wake up!"); 
int requestCode = 3824723; // this is not currently used by Android. 
PendingIntent pIntent = PendingIntent.getBroadcast(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pIntent); 


三问:是的,我建议PHP方法

+0

感谢您的惊人答案.. 你能告诉我如何访问谷歌日历?那是网上的日历..? – 2011-03-03 11:00:09

+0

当您在日历上循环时(第一步),请查看_“displayName”_字段。 – 2011-03-03 13:09:52