Absicht, starten Sie die Uhr-Anwendung auf android
Stehe ich vor einem problem mit einem Uhr-widget, die ich gemacht. Ich möchte die Benutzer-touch der Uhr und starten Sie die Uhr-app auf dem Handy. dies ist der code:
//this worked on my nexus 2.1
if(VERSION.SDK.equals("7")){
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.deskclock", "com.android.deskclock.DeskClock"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, AlarmClockIntent, 0);
views.setOnClickPendingIntent(R.id.Widget, pendingIntent);
AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
}
//this worked on my nexus +froyo2.2
else if(VERSION.SDK.equals("8")){
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.google.android.deskclock", "com.android.deskclock.DeskClock"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, AlarmClockIntent, 0);
views.setOnClickPendingIntent(R.id.Widget, pendingIntent);
AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
}
//this worked on my htc magic with 1.5 and 1.6
else{
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.alarmclock", "com.android.alarmclock.AlarmClock"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, AlarmClockIntent, 0);
views.setOnClickPendingIntent(R.id.Widget, pendingIntent);
AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
}
Machte ich das oben, so das, wenn ich berühre die Uhr öffnet den Wecker-Einstellungen. Aber ist nicht universal.
Ich fand heraus, dass auf Droiden mit 2.2 nicht funktioniert. Es muss eine bessere Lösung als die Schaffung einer if-Anweisung für jedes android-Handy Geschmack ich der Welt. Plus ich glaube nicht, dass das Paket-Namen für alle.
Weiß jemand, wie man dies überwinden helfen bitte.
InformationsquelleAutor der Frage John | 2010-08-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser code funktioniert für meine Uhr-widget.
In dieser Weise kann ich führen Sie eine Standard-Uhr-manager.
InformationsquelleAutor der Antwort frusso
Folgen bis zu Mayra ' s Antwort, die Klasse
android.provider.AlarmClock
hat die richtigeIntent
für diese, aber es ist nur bei API level 9 und höher. (Wenigstens jemand bei Google hört auf Anfragen wie diese!)Zu starten Sie die Uhr-app aus dem widget der folgende code funktioniert:
Müssen Sie auch die Erlaubnis:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
InformationsquelleAutor der Antwort resnbl
Den richtigen Weg zu beginnen, eine Tätigkeit außerhalb Ihrer Anwendung ist die Verwendung eines Impliziten intent. Mit einer impliziten Absicht, Sie nicht einer bestimmten Klasse zu starten, anstelle Sie eine Aktion angeben, dass andere apps können wählen, zu handeln.
Dies ist um zu verhindern, dass Bruch in Ihrer app, wenn der Ersteller die app entscheidet, benennen Sie Ihre Klasse oder so. Auch, ermöglicht es mehrere apps reagieren auf die gleiche Aktion.
Sehen intents und intent-Filter für mehr details über implizite intents.
Leider, Sie müssen die app-Entwickler zu vereinbaren, um alle implementieren eine bestimmte Aktion, um für diese zu arbeiten. Wenn die Uhr-apps haben dies nicht, dann ist es kein guter Weg, das zu erreichen, was Sie wollen.
Ich würde vorschlagen, vor dem Versuch zum erstellen eine riesige if-Anweisung, wie Sie haben, da die app könnte auch anders sein, nicht nur mit verschiedenen sdk-Versionen, aber mit verschiedenen Handys, da die Handy-Hersteller können wählen, zu ersetzen apps. Damit Ihre app wird ständig brechen auf neue Handys, wenn Sie sich darauf verlassen zu können, öffnen Sie die Uhr-app.
InformationsquelleAutor der Antwort Cheryl Simon
@Mayra ist richtig. Das ist der Weg. Aber die native clock-Anwendung verfügt nicht über eine eingetragene Absicht und ist nicht mit einem intent-filter. Ich glaube nicht, dass es eine native Anwendung, andere als die system-Einstellungen, die Sie öffnet.
Auch die native Uhr-Anwendung ist nicht verfügbar in der gleichen form oder gar nicht mehr verfügbar ist, auf anderen Handys. Dies ist auch über die SDK-Versionierung. So gibt es wirklich keine (gute) Möglichkeit für das Umschalten auf entweder.
Ihre beste Ausweg ist, senden Sie einen patch auf source.android.com das gibt der Uhr-Anwendung einen intent-filter und dann registrieren Sie die Absicht, auf der http://www.openintents.org/en/intentstable. Zumindest dann Ihre app funktioniert auf eine Teilmenge der Geräte ausfällt und sauber auf andere (nämlich keine Anwendung gefunden werden, um zu behandeln die Absicht).
InformationsquelleAutor der Antwort pjv
Kleine Ergänzung für frusso Antwort. Starten Alarm Clock in Google Galaxy Nexus-Handys:
in anderen Fällen eingeleitet werden, der Uhr-Anwendung, anstelle der Wecker
InformationsquelleAutor der Antwort iBog
Aus der api-Ebene 19, die Sie verwenden können, um zu zeigen die alarm-Liste auf dem Standard-Uhr-app:
InformationsquelleAutor der Antwort iGio90
Code:
Erlaubnis:
InformationsquelleAutor der Antwort Ahamadullah Saikat
Können Sie hinzufügen
zu frusso Antwort zur Unterstützung der neuen Xperia-Handys.
InformationsquelleAutor der Antwort Victor Laskin