2012-08-04 77 views
0

我正在用android 4.1 API創建一個android應用程序,並且我有一個問題。Android API日曆

我的代碼編譯似乎有問題,但它不會給我任何錯誤,當我嘗試在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); 

//提交查詢並返回一個Cursor對象。 curl = 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; 
} 


} 
+1

發佈您的logcat。我們還有什麼想法知道哪部分崩潰。它是診斷碰撞時最重要的事情之一。讓它成爲一種習慣。 – JoxTraex 2012-08-04 15:22:01

回答

0

對於初學者來說,這是錯誤的,並不會在Android 4.1的工作:

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

簡而言之,如果你打算使用日曆API,你應該使用CalendarContract和子類和硬避免像這樣將常量編碼到代碼中。

例如,URI您使用 - content://calendar/calendars - 包含權威calendar - 它應該是com.android.calendar - 甚至更好,只是從API傳遞Uri