Partage
  • Partager sur Facebook
  • Partager sur Twitter

creer un fournisseur

pb a la creation

    31 décembre 2012 à 11:06:25


    j'ai recopie le code de la formation pour faire un fournisseur, voici mon code

    MembreDatabase.java
    package hjbb.haythem.base;
    
    import android.content.UriMatcher;
    import android.net.Uri;
    import android.provider.BaseColumns;
    
    public class MembreDatabase {
        // Autorité de ce fournisseur
        public static final String AUTHORITY = "hjbb.haythem.base.provider.MembreProvider";
        // Nom du fichier qui représente la base
        public static final String NAME = "membre.db";
        // Version de la base
        public static final int VERSION = 1;
    
        private static final int DIR = 0;
        private static final int ITEM = 1;
        
        private static final UriMatcher membreMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    
        public static final class Metier implements BaseColumns {
            static {
              membreMatcher.addURI(AUTHORITY, "metier", DIR);
              membreMatcher.addURI(AUTHORITY, "metier/#", ITEM);
            } 
            
            // Nom de la table
            public static final String TABLE_NAME = "metier";
    
            // URI
            public static final Uri CONTENT_URI =
                Uri.parse("content://" + AUTHORITY + "/" + TABLE_NAME);
    
            // Types MIME
            public static final String TYPE_DIR =
                "vnd.android.cursor.dir/vnd." + AUTHORITY + "." + TABLE_NAME;
            public static final String TYPE_ITEM =
                "vnd.android.cursor.item/vnd." + AUTHORITY + "." + TABLE_NAME;
    
            // Attributs de la table
            public static final String INTITULE = DatabaseHandler.METIER_INTITULE;
            public static final String SALAIRE = DatabaseHandler.METIER_SALAIRE;
        }
    }
    


    MembreProvider.java
    package hjbb.haythem.base;
    
    import android.content.ContentProvider;
    import android.content.ContentUris;
    import android.content.ContentValues;
    import android.content.UriMatcher;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteQueryBuilder;
    import android.net.Uri;
    
    public class MembreProvider extends ContentProvider  {
    
    	public static final String AUTHORITY = "hjbb.haythem.base.provider.MembreProvider";
    
        private static final int DIR = 0;
        private static final int ITEM = 1;
        public static final String TABLE_NAME = "metier";
        DatabaseHandler mHandler = null;
        SQLiteDatabase mDb;
        private static final UriMatcher membreMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    
        static {
            // Correspondra à content://sdz.chapitreQuatre.provider.MembreProvider/metier
            membreMatcher.addURI(AUTHORITY, "metier", DIR);
            // Correspondra à content://sdz.chapitreQuatre.provider.MembreProvider/metier/un_nombre
            membreMatcher.addURI(AUTHORITY, "metier/#", ITEM);
        }
    	
    	public static final String TYPE_DIR =
    	    "vnd.android.cursor.dir/vnd." + AUTHORITY + "." + TABLE_NAME;
    	public static final String TYPE_ITEM =
    	    "vnd.android.cursor.item/vnd." + AUTHORITY + "." + TABLE_NAME;
    
    	public String getType(Uri uri) {
    	    // Regardez dans l'exemple précédent, pour toute une table on avait la valeur 0
    	    if (membreMatcher.match(uri) == 0) {
    	        return(TYPE_DIR);
    	    }
    
    	    // Et si l'URI correspondait à une ligne précise dans une table, elle valait 1
    	    return(TYPE_ITEM);
    	}
    	
    	@Override
    	public boolean onCreate() {
    		// Je crée mon Handler comme nous l'avons vu dans le chapitre sur les bases de données
    		  mHandler = new DatabaseHandler(getContext(), "database.db", null,1);
    		  mDb = mHandler.getWritableDatabase(); 
    		  // Et si tout s'est bien passé, je retourne true
    		  return((mDb == null) ? false : true);
    	}
    
    	@Override
    	public int delete(Uri url, String where, String[] whereArgs) {
    		  int count = mHandler.getWritableDatabase().delete(DatabaseHandler.METIER_TABLE_NAME, where, whereArgs);
    		  getContext().getContentResolver().notifyChange(url, null);
    		  return count;
    		}
    
    	
    	@Override
    	public Uri insert (Uri url, ContentValues initialValues) {
    		  long id = mHandler.getWritableDatabase().insert(DatabaseHandler.METIER_TABLE_NAME,    DatabaseHandler.METIER_KEY,    initialValues);
    		  if (id > 0) {
    		    Uri uri = ContentUris.withAppendedId(Uri.parse("content://hjbb.haythem.base.provider.MembreProvider/metier/"), id);
    		    getContext().getContentResolver().notifyChange(uri, null);
    		    return uri;
    		  }
    		  return null;
    		}
    
    	
    
    	@Override
    	public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) {
    		  SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
    
    		  builder.setTables(DatabaseHandler.METIER_TABLE_NAME);
    
    		  Cursor c = builder.query(mHandler.getReadableDatabase(), projection, selection, selectionArgs, null, null, sort);
    		  c.setNotificationUri(getContext().getContentResolver(), url);
    		  return(c);
    	}
    
    	public int update (Uri url, ContentValues values, String where, String[] whereArgs) {
    		  int count = mHandler.getWritableDatabase().update(DatabaseHandler.METIER_TABLE_NAME, values, where, whereArgs);
    		  getContext().getContentResolver().notifyChange(url, null);
    		  return count;
    		}
    
    }
    

    et voici la 2eme application(client):
    package hjbb.haythem.forniss;
    
    
    
    import android.app.Activity;
    import android.content.ContentResolver;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    	
        int r;
        ListView l;
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ContentResolver contentResolver = getContentResolver();
            setContentView(R.layout.activity_main);
            Toast.makeText(this, "test", Toast.LENGTH_SHORT).show();
            l = (ListView)findViewById(R.id.listView1);
            
            Cursor c = contentResolver.query(Uri.parse("content://hjbb.haythem.base.provider.MembreProvider/metier"), null,  null, null, null);  
      		SimpleCursorAdapter adapter = new SimpleCursorAdapter (MainActivity.this, R.layout.cursor_row, c, new String[]{"intitule", "salaire"}, new int[]{R.id.intitule, R.id.salaire});
      		l.setAdapter(adapter);
         }
    }
    

    Image utilisateur
    quelle est la permmission pour acceder d'une application cliente?
    comment ajouter un autre tableau? et merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      31 décembre 2012 à 11:18:29

      Si c'est pour un accès au net (j'ai pas lu le code) et que tu veux autoriser une app cliente (par exemple moi pour contacter ma bdd locale depuis mon app cliente) il faut ajouter ça dans le manifest:

      <uses-permission android:name="android.permission.INTERNET"></uses-permission>
      • Partager sur Facebook
      • Partager sur Twitter
        31 décembre 2012 à 11:22:36

        Citation : vangoeth

        Si c'est pour un accès au net (j'ai pas lu le code) et que tu veux autoriser une app cliente (par exemple moi pour contacter ma bdd locale depuis mon app cliente) il faut ajouter ça dans le manifest:

        <uses-permission android:name="android.permission.INTERNET"></uses-permission>


        je veux partager les donnees d'une application avec les autres applications de mon android mobile, sans utiliser l'internet
        • Partager sur Facebook
        • Partager sur Twitter
          31 décembre 2012 à 11:25:32

          Ha ok tout est en interne sur le smartphone?
          Tu n'as rien en local (genre un serveur) sur ton pc?

          Et le logCat il dit quoi? ^^
          • Partager sur Facebook
          • Partager sur Twitter
            31 décembre 2012 à 12:34:01

            Citation : vangoeth

            Ha ok tout est en interne sur le smartphone?
            Tu n'as rien en local (genre un serveur) sur ton pc?

            Et le logCat il dit quoi? ^^


            fournisseur est un sort du serveur, il sert a partager les donnees (base de donnees, fichier) d'une application avec les autres
            log:
            Image utilisateur
            • Partager sur Facebook
            • Partager sur Twitter

            creer un fournisseur

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown