Hallo Community, ich habe ein Widget welches sich beim daraufklicken eigentlich die AlarmClock App öffnen sollte... Doch leider funktioniert diese nicht.
Wenn das Widget auf dem HomeScreen platziert ist und ich in eclipse erneut Run drücke / es erneut installiere funktioniert es. Kann mir einer erklären woran das liegt ?
Hier mal ein auszug aus der
Java
public class ClockWidgetProvider extends AppWidgetProvider {
public static final String TAG = "Widget";
public void onReceive(Context context, Intent intent) {
Log.v(TAG, "Widget onReceive() gestartet");
if (Build.VERSION.SDK_INT <= 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.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);
} 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.deskclock",
"com.android.deskclock.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);
}
}
static void updateAppWidget(Context context,
AppWidgetManager appWidgetManager, int appWidgetId,
String designPref) {
Log.d(TAG, "updateAppWidget appWidgetId=" + appWidgetId
+ " designPref=" + designPref);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget);
// Tell the widget manager
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
Alles anzeigen
früher funktionierte der Code eigentlich...
Nachdem ich aber mit hilfe von "UweApps" dem Widget noch ein Config gegeben habe, ist die funktion wie oben schron beschrieben nur nach neuinstallation möglich..
Und hier der Code der Config:
Java
public class ClockWidgetConfig extends Activity {
public static final String TAG = "ClockConfig";
private static final String PREFS_NAME = "de.bk.icsanalogclock";
private static final String PREF_PREFIX_KEY = "widgetimg";
private Context context = this;
private int appWidgetId;
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(TAG, "Starte Config");
setContentView(R.layout.config);
// hole WidgetID
Intent launchIntent = getIntent();
Bundle extras = launchIntent.getExtras();
appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
// setzte CancelValue
Intent cancelResultValue = new Intent();
cancelResultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
appWidgetId);
setResult(RESULT_CANCELED, cancelResultValue);
// Lade Config-UI
spinner = (Spinner) findViewById(R.id.spinner1);
// fülle Spinner
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.dialname, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
// OK button
Button ok = (Button) findViewById(R.id.button1);
// setzte OnClick-Listener
ok.setOnClickListener(mOnClickListener);
// cancel button
Button cancel = (Button) findViewById(R.id.button2);
cancel.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Log.v(TAG, "Konfiguration abgebrochen.");
finish();
}
});
}
View.OnClickListener mOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
// hole Spinner-Value
String value = spinner.getSelectedItem().toString();
// Speichere Auswahl
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME,
0);
SharedPreferences.Editor edit = prefs.edit();
edit.putString(PREF_PREFIX_KEY + appWidgetId, value);
edit.commit();
Log.v(TAG, "Design gespeichert: " + value);
// Update fuer Widget
Context context = ClockWidgetConfig.this;
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(context);
if (value.equals("Design 1")) {
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
else if (value.equals("Design 2")) {
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget2);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
// setze ResultValue
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
appWidgetId);
setResult(RESULT_OK, resultValue);
finish();
}
};
// Read the layout from the SharedPreferences object for this widget.
// If there is no preference saved, get the default from a resource
static String loadDesignPref(Context context, int appWidgetId) {
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);
String layout = prefs.getString(PREF_PREFIX_KEY + appWidgetId, null);
if (layout != null) {
return layout;
} else {
return context.getString(R.string.dial1);
}
}
static void loadAllDesignPrefs(Context context,
ArrayList<Integer> appWidgetIds, ArrayList<String> texts) {
Log.v(TAG,"LayoutPrefs laden...");
}
}
Alles anzeigen