2010-10-18 12 views
0

Je veux faire un peu de calcul après l'événement tactile sur mon widget. Y at-il une possibilité de le faire sans démarrer une activité? Mon problème est que je dois enregistrer un onClickPendingIntent à l'effleurement ....TouchEvent sur Widget sans créer d'activité

Il y a une réponse visuelle ennuyante avec ma solution: l'écran clignote au noir et réapparaît à l'écran d'accueil.

c'est dans le widget fournisseur:

Intent doit_intent = new Intent(context, DoItActivity.class); 
PendingIntent pendingIntent = 
      PendingIntent.getActivity(context,0, doit_intent, 0); 
remoteView.setOnClickPendingIntent(R.id.main_widget, pendingIntent); 

DoItActivity.class

public class DoItActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //do some static function calls 

    finish(); 
    } 
} 

Répondre

2

Utilisez un PendingIntent qui ne démarre pas une activité, alors. Utilisez getService() ou getBroadcast() au lieu de getActivity().

+1

vous avez fait ma journée! – berlindev

+0

@LeoMelo: "Comment puis-je implémenter un PendingIntent qui ne démarre pas une activité?" - appelez 'getService()' au lieu de 'getActivity()' pour créer un 'PendingIntent' qui démarrera un service. Appelez 'getBroadcast()' au lieu de 'getActivity()' pour créer un 'PendingIntent' qui enverra une diffusion. – CommonsWare

+0

@LeoMelo: Vous ne pouvez pas utiliser 'getService()' ou 'getBroadcast()' pour démarrer une activité. Vous utilisez 'getService()' pour lancer un 'Service'. Vous utilisez 'getBroadcast()' pour lancer un 'BroadcastReceiver'. – CommonsWare