Je suis en train de faire quelque chose de vraiment devrait être assez facile, mais ça me rend fou. Je suis en train de lancer une activité lorsque l'écran d'accueil widget est pressé, comme une configuration d'activité pour le widget. Je pense que j'ai suivi mot pour mot le tutoriel sur le site des Développeurs Android, et même un peu officieux de tutoriels, mais je doit manquer quelque chose d'important qu'il ne fonctionne pas.
Voici le code:
public class VolumeChangerWidget extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
final int N = appWidgetIds.length;
for (int i=0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
Log.d("Steve", "Running for appWidgetId " + appWidgetId);
Toast.makeText(context, "Hello from onUpdate", Toast.LENGTH_SHORT);
Log.d("Steve", "After the toast line");
Intent intent = new Intent(context, WidgetTest.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
Lors de l'ajout d'un widget sur l'écran d'accueil, Logcat montre les deux lignes de débogage, mais pas le pain grillé. (Des idées pourquoi pas?) Toutefois, le plus difficile, c'est que lorsque je puis cliquez sur le bouton avec le PendingIntent associés avec elle, il ne se passe rien du tout. Je sais que le "WidgetTest" l'activité peut s'exécuter parce que si j'ai mis en place une Intention de la part dans l'activité principale, il se lance très bien.
En cas de questions, voici le fichier Manifeste Android:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.steve"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Volume_Change_Program"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".WidgetTest"
android:label="@string/hello">
<intent_filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent_filter>
</activity>
<receiver android:name=".VolumeChangerWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/volume_changer_info" />
</receiver>
</application>
<uses-sdk android:minSdkVersion="3" />
Est-il un moyen pour tester où la faute est? I. e. la faute est que le bouton n'est pas correctement liés à la PendingIntent, ou que le PendingIntent ou l'Intention n'est pas de trouver WidgetTest.class, etc?
Merci beaucoup pour votre aide!
Steve