IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Création d'un widget SMS


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Points : 31
    Points
    31
    Par défaut Création d'un widget SMS
    Bonjour,
    je tente de créer un widget pour gérer la lecture de SMS
    J'ai écris quelques lignes de code dont le seul but est de m'afficher le premier sms de sms/inbox de ma base de donné sms. Mon problème est que éclipse ne reconnait pas "getContentResolver()" et "startManagingCursor" et du coup refuse de compiler...
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    import android.R.string;
    import android.appwidget.AppWidgetManager;
    import android.appwidget.AppWidgetProvider;
    import android.net.Uri;
    import android.widget.RemoteViews;
    import android.content.ComponentName;
    import android.content.ContentResolver;
    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.widget.ArrayAdapter;
    import android.app.Activity;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
     
    public class MonWidget extends AppWidgetProvider {
     
    	 public void onUpdate(Context context,  AppWidgetManager appWidgetManager,
    	            int[] appWidgetIds) {
     
    		 Uri uri = Uri.parse("content://sms/inbox");
    		// returns all the results.
    		Cursor c= getContentResolver().query(uri, null, null ,null,null); 
    		// called by the Activity.
    		startManagingCursor(c);
    		String body = null;
    		String number = null;
     
    		if(c.moveToFirst()) { // move cursor to first row
    		   // retrieves the body and number of the SMS
    		   body = c.getString(c.getColumnIndexOrThrow("body")).toString();
    		   number = c.getString(c.getColumnIndexOrThrow("address")).toString();
    		}
     
    		// when your done, close the cursor.
    		c.close(); 
         RemoteViews updateViews = new RemoteViews(context.getPackageName(),
                 R.layout.widget_layout);
     
     
         updateViews.setTextColor(R.id.text, 0xFF000000);
         updateViews.setTextViewText(R.id.text, (CharSequence) body);
     
         ComponentName thisWidget = new ComponentName(context, MonWidget.class);
         appWidgetManager.updateAppWidget(thisWidget, updateViews);
         }
    }
    je ne trouve pas l'erreur même après de nombreuse recherche sur le net et dans les tutos...
    Je suis désespéré!
    Merci de jeter un œil

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Bonjour,

    tu as tenté le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cursor c= context.getContentResolver().query(uri, null, null ,null,null);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    J'ai essayé et eclipse me met en commentaire "add cast to method receiver" ou "la méthode getContentResolver() n'est pas définie pour monwidget"..., peut-être existe-t-il une solution pour faire ce que je veux faire...?
    il y a aussi un problème avec startManagingCursor

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    il te met ton erreur à quel endroit ?

    Sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // called by the Activity.
    startManagingCursor(c);
    Cet appel n'est valable uniquement dans le cas où t'as classe est une activity. Là c'est un widget donc ceci n'est pas valide.
    Ca permet d'après ce que j'ai compris de supprimer le cursor lorsque l'activity est détruite. Donc il suffit que tu le gère manuellement dans ton widget.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Le programme s'est compilé mais l'éxcution du widget à planté... comment utiliser manuellement le curseur?

    Si quelqu'un a une idée de comment pointer le curseur manuellement sur le premier sms je suis preneur, pour l'instant je tourne sur les recherche mais c'est pas évident...
    merci

  6. #6
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Salut j'ai fait divers essaie et j'ai tapé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Uri uri = Uri.parse("content://sms/inbox");
    		// returns all the results from the given Context
    		Cursor c = context.getContentResolver().query(uri, null, null ,null,null); 
     
    		String body = null;
    		String number = null;
     
    		c.moveToPosition(1);
    		   body = c.getString(c.getColumnIndexOrThrow("body")).toString();
    		   number = c.getString(c.getColumnIndexOrThrow("address")).toString();
     
     
    		// when your done, close the cursor.
    		c.close();
    mais quand je lance le widget, j'obtiens une erreur d'exécution, pourtant je n'ai pas oublié la permission READ_SMS...

  8. #8
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Tu peux posté ton exception ?

    (la view "LogCat" dans Eclipse)

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Points : 31
    Points
    31
    Par défaut Probleme résolu
    Ok j'ai trouvé l'erreur grâce au LogCat.
    C'était un problème de permission dans le manifest.
    Mon conseil est de ne pas utiliser l'utilitaire ou plugin qui rentre la permission automatiquement et le mettre à la main au bon endroit!
    J'espère que ça en aidera d'autre!
    Je voudrais remercier MrDuchnok qui m'a été d'une aide précieuse!

  10. #10
    Candidat au Club
    Homme Profil pro
    PROGRAMMEUR ANDROID
    Inscrit en
    Octobre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : PROGRAMMEUR ANDROID
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 1
    Points : 2
    Points
    2
    Par défaut ESSAI CE CODE LA
    public class MainActivity extends Activity {

    TextView Nums, Dates, Msg; // appartient à une autre vue crée dans le layout :R.layout.contenu
    ListView MsgList; // // appartient à la vue principale dans le layout :R.layout.activity_main
    SimpleCursorAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MsgList = (ListView) findViewById(R.id.MsgList);

    Uri contenu = Uri.parse("content://sms/inbox");
    String[] read = new String[]{"_Id" , "address" , "date" , "body"};

    ContentResolver cr = getContentResolver();
    Cursor c = cr.query(contenu, read, null, null, null);
    System.out.println(read[1]);
    // DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");



    adapter = new SimpleCursorAdapter(this, R.layout.contenu, c,
    new String[]{read[1] , "date" , "body"},
    new int[]{R.id.Nums , R.id.Dates , R.id.Msg},
    0 );


    MsgList.setAdapter(adapter);
    }




    IMPORT CE QU'IL Y AURA A IMPORTE ET LE TOUR EST JOUE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Android] Mon widget sms
    Par pitispike dans le forum Mon application mobile
    Réponses: 2
    Dernier message: 28/06/2011, 13h17
  2. Création d'un widget (dashboard)
    Par hmac2010 dans le forum Apple
    Réponses: 5
    Dernier message: 31/05/2010, 08h22
  3. Création d'un Widget pour la recherche dans une liste
    Par faxeur1986 dans le forum Java ME
    Réponses: 0
    Dernier message: 26/08/2009, 15h56
  4. [AJAX] Création d'un widget avec UWA
    Par folly29 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 02/06/2008, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo