0

下記のコードを使用して、カレンダーイベントの追加画面をユーザーに表示しています。

たとえば、次のように、特定の詳細を使用してイベントを作成する必要があるかどうかをユーザーに確認します。

Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setData(CalendarContract.Events.CONTENT_URI);
startActivity(intent);

この部分はAndroid4.0以降では正常に機能していますが、Android2.3では機能していません。2.3から4.1までのすべてのAndroidOSでこれを機能させたい。

4

2 に答える 2

0

他の方法で行う場合にも、これを使用できます。

mCursor = getContentResolver().query(
CalendarContract.Events.CONTENT_URI, COLS, null, null, null);

calender の contentProvider です。

于 2012-12-12T07:19:42.380 に答える
0
public class Main extends Activity implements OnClickListener{
private Cursor mCursor = null;
private static final String[] COLS = new String[]
{ CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART};
}

ここで、on create メソッドをオーバーライドする必要があります。データベース カーソルの設定方法に特に注意してください。ここで、以前に定義した COLS 定数が必要になります。また、データベース カーソルが初期化され、クリック ハンドラー コールバックが設定された後、オン クリック ハンドラーを手動で呼び出すことにも注意してください。このショートカットにより、コードを繰り返さなくても、最初に UI に入力することができます。

Main.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mCursor = getContentResolver().query(
CalendarContract.Events.CONTENT_URI, COLS, null, null, null);
mCursor.moveToFirst();
Button b = (Button)findViewById(R.id.next);
b.setOnClickListener(this);
b = (Button)findViewById(R.id.previous);
b.setOnClickListener(this);
onClick(findViewById(R.id.previous));
}

コールバックでは、カーソルをデータベース内の正しいエントリに操作し、UI を更新します。

@Override
public void onClick(View v) {
TextView tv = (TextView)findViewById(R.id.data);
String title = "N/A";
Long start = 0L;
switch(v.getId()) {
case R.id.next:
if(!mCursor.isLast()) mCursor.moveToNext();
break;
case R.id.previous:
if(!mCursor.isFirst()) mCursor.moveToPrevious();
break;
}
Format df = DateFormat.getDateFormat(this);
Format tf = DateFormat.getTimeFormat(this);
try {
title = mCursor.getString(0);
start = mCursor.getLong(1);
} catch (Exception e) {
//ignore
}
tv.setText(title+" on "+df.format(start)+" at "+tf.format(start));
}
于 2012-12-12T07:53:15.807 に答える