1. Tom299, 12.04.2012 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    Hallo,

    soweit ich gelesen habe gibts bei Android erst ab 4.03 einen "Standard-Kalender" zum anprogrammieren? Ich stehe aber vor dem Problem, daß ich unsere 1. Programmversion auf 2.3.3 ausliefern muss und eine Kalender-Integration brauch (einfache Termine anlegen und anzeigen).

    Hat jemand Erfahrung mit Kalender-Apps anderer Hersteller und kann mir was empfehlen? Muß auch nicht kostenlos sein, aber brauchbar.

    Ein Bonus wäre, wenn es die Möglichkeit gäbe, vom Kalender-Event in meine App zu springen. Aber das ist vermutlich nicht machbar, wenn man den Kalender nicht selbst entwickelt hat ...


    Gruß,
    Tom
     
  2. DieGoldeneMitte, 12.04.2012 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Android Kalender lesen geht ja noch, aber Android-Kalender beschreiben ist die Hölle! Man muss wissen, dass es keinen Passiven Kalender in dem Sinne gibt, sondern dass die Daten von einem Servicemanager verwaltet werden. Der schreibt seine Daten zwar in sqlite Tabellen, aber das ist alles ziemlich undokumentiert (und je nach Hersteller wohl auch unterscheidlich - siehe unten)

    Zum Anlegen konnte man aber zumindest (iirc) schon immer per Intent in Kalenderapps springen.

    Ich bin seinerzeit kläglich gescheitert, eine Eingabeapp zu entwickeln. Ich konnte zwar Einträge auf dem Androiden schreiben, aber auf einem Samsung Gerät wurden die Termine nicht gegen den Googlekalender gesynct, auf einem Nexus One klappte es.
    Ich weiß bis heute nicht, wieso :cursing:
     
    Zuletzt bearbeitet: 12.04.2012
  3. Tom299, 12.04.2012 #3
    Tom299

    Tom299 Threadstarter Android-Experte

    Ich hatte folgendes Beispiel probiert -> Working with the Android Calendar - Developer.com

    Code:
    				String[] projection = new String[] { "_id", "name" };
    				Uri calendars = Uri.parse("content://calendar/calendars");
    				Cursor managedCursor = managedQuery(calendars, projection, null, null, null);
    				Cursor managedCursorActive = managedQuery(calendars, projection,"selected=1", null, null);
    				if (managedCursor != null && managedCursor.moveToFirst()) {
    					 String calName; 
    					 String calId; 
    					 int nameColumn = managedCursor.getColumnIndex("name"); 
    					 int idColumn = managedCursor.getColumnIndex("_id");
    					 do {
    					    calName = managedCursor.getString(nameColumn);
    					    calId = managedCursor.getString(idColumn);
    					    System.out.println("calName: " + calName);
    					    System.out.println("calID: " + calId);
    					 }
    					 while (managedCursor.moveToNext());
    				}
    				
    				String sID = null;
    				if (managedCursorActive != null && managedCursorActive.moveToFirst()) {
    					 String calName; 
    					 String calId; 
    					 int nameColumn = managedCursor.getColumnIndex("name"); 
    					 int idColumn = managedCursor.getColumnIndex("_id");
    					 do {
    					    calName = managedCursor.getString(nameColumn);
    					    calId = managedCursor.getString(idColumn);
    					    System.out.println("calName: " + calName);
    					    System.out.println("calID: " + calId);					    
    					 } 
    					 while (managedCursor.moveToNext());
    					 sID = calId;
    				}
    
    Beide Cursor sind immer NULL, egal ob mit Samsung Galaxy S2, Galaxy Note oder meinem HTC Sensation.

    Das einzige, was funktionieren würde, wäre:
    Code:
    					Calendar calStart = Calendar.getInstance();
    					calStart.set(Calendar.HOUR_OF_DAY, 14);
    					calStart.set(Calendar.MINUTE, 0);
    					calStart.set(Calendar.SECOND, 0);
    					calStart.set(Calendar.MILLISECOND, 0);					
    					Calendar calEnd = Calendar.getInstance();
    					calEnd.set(Calendar.HOUR_OF_DAY, 15);
    					calEnd.set(Calendar.MINUTE, 0);
    					calEnd.set(Calendar.SECOND, 0);
    					calEnd.set(Calendar.MILLISECOND, 0);					       
    					Intent intent = new Intent(Intent.ACTION_EDIT);
    					intent.setType("vnd.android.cursor.item/event");
    					intent.putExtra("beginTime", calStart.getTimeInMillis());
    					intent.putExtra("endTime", calEnd.getTimeInMillis());
    					intent.putExtra("title", "Titel");
    					intent.putExtra("description", "Beschreibung");
    					intent.putExtra("eventLocation", "Location");					
    					startActivity(intent);
    
    Allerdings bringt mir das nichts, da man dann jeden Termin von Hand bestätigen / speichern müßte, es soll aber automatisch passieren.

    Also gehts wirklich nur ab 4.03?
     
  4. DieGoldeneMitte, 12.04.2012 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Tom299 gefällt das.
  5. Tom299, 12.04.2012 #5
    Tom299

    Tom299 Threadstarter Android-Experte

    Danke für den Tip mit der geänderten URI, damit klappts :thumbsup:
     
  6. Tom299, 13.04.2012 #6
    Tom299

    Tom299 Threadstarter Android-Experte

    Ist es möglich, beim Kalender den Intent abzufangen, wenn ein Termin zur Detailansicht geöffnet werden soll und anstatt im Kalender dann in meiner APP angezeigt / verarbeitet wird?

    Wenn ich den Kalender öffne und z.B. den ersten Termin anklicke, dann seh ich folgendes im LogCat -> Starting: Intent { act=android.intent.action.VIEW dat=content://com.android.calendar/events/1 cmp=com.android.calendar/.EventInfoActivity (has extras) } from pid 31111

    Jetzt hab ich mal in meiner App eine Activity angelegt:
    Code:
    public class CalendarActivity extends Activity {
    
    	public final static String INTENT_CALENDAR_ACTIVITY = "android.intent.action.VIEW";
    	
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		
    		TextView tvCalendar = new TextView(this);
    		tvCalendar.setText("Test 1234");
    		setContentView(tvCalendar);
    	}
    
    }
    
    und im Manifest folgendes hinzugefügt:
    Code:
            <activity android:name=".activity.CalendarActivity"
                      android:label="@string/app_name"
                      android:screenOrientation="portrait">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:path="content://com.android.calendar/events"/>
                </intent-filter>
            </activity>
    
    Ich hatte es zuerst mal ohne -> <data android: path="content://com.android.calendar/events"/> versucht, aber das macht scheinbar keinen Unterschied. Leider passiert nichts, wenn ich den Termin im Kalender anklicke, man kommt direkt in die Detailansicht des Kalenders ...

    Ist es überhaupt möglich, an das Intent so ranzukommen oder bin ich da auf dem Holzweg? :rolleyes2:


    Gruß,
    Tom
     
Die Seite wird geladen...
Similar Threads Forum Datum
Samsung Galaxy S8 / S8+ - Kalender Widget: Nur aktuellen Tag anzeigen Samsung S-Planner/Kalender 21.05.2017
Geburtstage im Kalender doppelt, wie Kontakte trennen? Samsung S-Planner/Kalender 22.05.2017
B390 Probleme mit Kalender verfielfachte Einträge. Honor 7 Forum 23.05.2017
mehrere Outlook Kalender auf Google Kalender darstellen Kalender Mittwoch um 21:14 Uhr
Google-Kalender-App und Synchronisation Huawei Mate 9 Forum Donnerstag um 08:56 Uhr
Suche: Kalender zur Übernahme aller Daten aus Google Kalender (PC) Kalender Donnerstag um 18:02 Uhr
Kalender Sync mit IOS / Android / Exchange Synchronisation Freitag um 11:56 Uhr
Google Kalender & Email auf einem Android Tablet deaktivieren? Android Allgemein Freitag um 18:33 Uhr
Bug im Kalender Huawei MediaPad M3 Forum Samstag um 11:25 Uhr
Zweiter Google Kalender wird nicht angezeigt Samsung Galaxy S6 (G920F) / S6 Edge (G925F) Forum Samstag um 12:45 Uhr

Users found this page by searching for:

  1. android intent kalender set endtime