我正在使用Android4.1API创建一个android应用程序,但我对它有一个问题。
我的代码编译似乎有问题,虽然它没有给我任何错误,但当我试图在Android手机上运行它时,它确实崩溃了。
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);
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;
}
}发布于 2012-08-04 23:49:51
对于初学者来说,这是错误的,并且不能在Android 4.1上工作:
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。
https://stackoverflow.com/questions/11809664
复制相似问题