首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android API日历

Android API日历
EN

Stack Overflow用户
提问于 2012-08-04 23:13:22
回答 1查看 607关注 0票数 0

我正在使用Android4.1API创建一个android应用程序,但我对它有一个问题。

我的代码编译似乎有问题,虽然它没有给我任何错误,但当我试图在Android手机上运行它时,它确实崩溃了。

代码语言:javascript
复制
package com.example.meetingmute;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Events;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.view.Menu;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
import android.media.AudioManager;

public class MainActivity extends Activity {

Button button;
TextView text;
boolean ringeronoff;
AudioManager mAudioManager;
AlertDialog ad;


@Override
public void onCreate(Bundle savedInstanceState) {
    Context context = getApplicationContext();
    ContentResolver contentResolver =       getApplicationContext().getContentResolver();

    final Cursor cursor =  contentResolver.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");

        System.out.println("Id: " + _id + " Display Name: " + displayName + " Selected: " + selected);
    }
    ad = new AlertDialog.Builder(this).create();
    read();

    Cursor cur = null;
    ContentResolver cr = getContentResolver();
    ContentValues values = new ContentValues();
    Uri uri = cr.insert(Events.CONTENT_URI, values);

//提交查询并取回游标对象。cur = cr.query(uri,EVENT_PROJECTION,selection,selectionArgs,null);

代码语言:javascript
复制
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = (Button) findViewById(R.id.button1);
    text = (TextView) findViewById(R.id.textView1);
    mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if(ringeronoff == true){
                text.setText("Ringer is On");
                mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                ringeronoff = false;
            }
            else{
                text.setText("Ringer is Off");
                mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                ringeronoff = true;
            }
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}


}
EN

回答 1

Stack Overflow用户

发布于 2012-08-04 23:49:51

对于初学者来说,这是错误的,并且不能在Android 4.1上工作:

代码语言:javascript
复制
final Cursor cursor =  contentResolver.query(Uri.parse("content://calendar/calendars"),
        (new String[] { "_id", "displayName", "selected" }), null, null, null);

简单地说,如果您打算使用日历API,则应该使用CalendarContract和子类,并且避免将常量硬编码到代码中,如下所示。

例如,您正在使用的URI - API -包含授权calendar -它应该是com.android.calendar -或者更好的是,直接从content://calendar/calendars传递Uri

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11809664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档