Visualizzazione stampabile
-
Prova Content Provider
Volevo fare qualche prova per utilizzare un content provider. Ho creato quindi un programmino che consentisse di inserire un contatto però appena premo il tasto Inserisci mi da un InvocationTargetException - NullPointerException mi aiutate a capire perchè ? Ecco il codice :
ActivityProvaIntent.class
File AndroidManifest
secondo me il problema è proprio nel Manifest dovrò settare qualche altra cosa ma non capisco cosa :( mi aiutate ? Thanks!
-
AIUTOOOO siete tutti in ferie ? :'(
-
Che target hai messo come sdk? Perchè le costanti Phone.* sono per le versioni pre 2.0.
Adesso sono al lavoro, quando arrivo a casa provo a guardare tra i miei codici per vedere come avevo fatto, che non mi ricordo cchiù.
Comunque intanto cerca con goole.
EDIT. Come non detto i Phone si usano anche adesso... Bah, comunque se hai pazienza e non trovi prima tu qualcosa aspetta che arrivi a casa.
-
Ok grazie...secondo me devo dichiarare qualcosa nel Manifest...mi stò scervellando ma non mi viene niente in mente!! UFF
-
Guarda, ho tentato di testare il tuo codice, ma mi sono arenato di fronte a un problema piuttosto strano.
Se non elimino dal mio manifest
codice:
<data android:mimeType="vnd.android.cursor.dir/data"></data>
la app non viene visualizzata nel menu delle app o_O
Può essere che dipenda dal fatto che ho l'emulatore fisso su Eclair, ma comunque la cosa mi ha lasciato perplesso.
Purtroppo non ho mai usato un ContentProvider veramente quindi prima dovrei mettermi sul pezzo con un po' di criterio per tirare fuori qualche considerazione sensata. Visto che comunque l'argomento è succoso, magari prima o poi lo farò... ;)
-
Cymon grazie per l'impegno ma non credo sia una questione di emulatore perche anche io ce l'ho fisso sulla 2.2 ma il programma funziona...solo che quando premo invio mi da questa eccezione....Copacabana a questo punto solo tu mi puoi aiutareeee! :’(
-
Quote:
Originariamente inviato da
mimmog
Cymon grazie per l'impegno ma non credo sia una questione di emulatore perche anche io ce l'ho fisso sulla 2.2 ma il programma funziona...solo che quando premo invio mi da questa eccezione....Copacabana a questo punto solo tu mi puoi aiutareeee! :’(
Mimmog e io?!?! dove mi lasci?roftl :p
Scherzo ovviamente! non ho potuto provarlo ma forse questo potrebbe servirti...
Link
-
Ciao bello! non mi ero dimenticato ma sò che pure tu stai sbattendo per il tuo programma quindi non volevo distoglierti dalle tue rogne :D
Comunque grazie vedo che questo codice utilizza ancora l'URI contact.people che mi pare sia stato sostituito da contact.contacts però mi può essere utile...ora me lo studio e se vi fa piacere (e se ci riesco) vi dico dove stava il problema! nel frattempo ogni ulteriore consiglio è ben gradito! ;)
-
Quote:
Originariamente inviato da
mimmog
Ciao bello! non mi ero dimenticato ma sò che pure tu stai sbattendo per il tuo programma quindi non volevo distoglierti dalle tue rogne :D
Comunque grazie vedo che questo codice utilizza ancora l'URI contact.people che mi pare sia stato sostituito da contact.contacts però mi può essere utile...ora me lo studio e se vi fa piacere (e se ci riesco) vi dico dove stava il problema! nel frattempo ogni ulteriore consiglio è ben gradito! ;)
Ahahah ma tranqui che ci sono! Anzì per intanto il mio sviluppo android è fermo per 5 giorni hehe Devo fare un programma in java per excel hehe
Si si come hai detto tu è stato sostituito e quindi bisogna provare con il nuovo..
Al massimo se non funzia, prova su stackoverflow.com, li hanno un sacco di guide e problemi tosti risolti o per lo meno consigli su come fare :)
-
Ok dai..anche io questi giorni mi ero fermato perchè è nato il mio bimbo :-) ma da oggi sono nuovamente sui libri !! ;)
-
Quote:
Originariamente inviato da
mimmog
Ok dai..anche io questi giorni mi ero fermato perchè è nato il mio bimbo :-) ma da oggi sono nuovamente sui libri !! ;)
Davvero?!?!?!?!
Ma woooowwwwwww!
Auguroni papà! Mi raccomando non ammalarmelo già di android ihih roftl
PS: cmq con il mio programma mi son un po' inchiodato perchè non riesco a connettermi a ebay haha
-
Quote:
Originariamente inviato da
dhalia
Davvero?!?!?!?!
Ma woooowwwwwww!
Auguroni papà! Mi raccomando non ammalarmelo già di android ihih roftl
PS: cmq con il mio programma mi son un po' inchiodato perchè non riesco a connettermi a ebay haha
Grazie caro :)
Vabbè la connessione secondo me è la parte più tosta così come quella con gmail per chi crea programmi di posta.... però creando le applicazioni facciamo un pochino di palestra sbattendo la testa sui problemi e cmq è senz'altro più divertente di studiare sul libro.... anche se poi lo tendo comunque sempre con me e lo apro ogni 2 minuti hihihihi
-
Quote:
Originariamente inviato da
mimmog
Grazie caro :)
Vabbè la connessione secondo me è la parte più tosta così come quella con gmail per chi crea programmi di posta.... però creando le applicazioni facciamo un pochino di palestra sbattendo la testa sui problemi e cmq è senz'altro più divertente di studiare sul libro.... anche se poi lo tendo comunque sempre con me e lo apro ogni 2 minuti hihihihi
Ihih ma è ovvio che lo continui ad aprire le prime volte :)
E' un po' come quando impari una lingua straniera.. all'inzio è normale il classico "oddio come si dice questo?"
Poi vedrai che tante cose vengo automatiche!
Per la connessione cmq devo aprirmi asynctask e poi far quello che dice ebay ma non funzia... il problema è che ora ho troppo da fare per scrivellarmi su giornate su quello :D
allora sai che ho fatto? ho iniziato un'altra app, più semplice e forse più utile heh
-
ahahah pure io faccio le ultime prove e poi mi metto a fare qualcosa di utile :) ma prima devo risolvere stò problema del content provider sennò non dormo la notte! :)
-
Quote:
Originariamente inviato da
mimmog
ahahah pure io faccio le ultime prove e poi mi metto a fare qualcosa di utile :)
Ihih bene bene :)
ma tu sviluppi per poi metter sul market?
Io ho due ideeuzze a cui sto "lavorando" e se riescon poi pensavo di metterle..
-
Intanto ho scoperto vedendo la documentazione di android che anche la classe Phone è deprecata quindi sicuramente le 2 righe con il put sono da modificare....
-
Quote:
Originariamente inviato da
mimmog
Ok dai..anche io questi giorni mi ero fermato perchè è nato il mio bimbo :-) ma da oggi sono nuovamente sui libri !! ;)
Uellà!
Augurissimi!
:D
E non stare a sentire Dhalia, ammalamelo di Android. Mica vorrai che ti chieda un iffon!
-
Grazie Cymon!!! no no che iffone!!! lo caccio di casa ! ahahaha
-
Ecco, il contento provider giusto dovrebbe essere questo :
ContactsContract.CommonDataKinds.Phone | Android Developers
stasera provo e vi faccio sapere! :)
-
Niente da fare è cambiato errore però... ore è
java.lang.UnsupportedOperationException: URI: content://com.android.contacts/data/phones, calling user: it.apogeo.android.cap08.mioprovacontent, calling package:it.apogeo.android.cap08.mioprovacontent
-
Come mai devi usare questo: <data android:mimeType="vnd.android.cursor.dir/data"></data> ?
Nel listato che hai postato non hai messo nulla di deprecato.
Io nel programma che avevo fatto non scrivevo nel content provider dei contatti, ma li leggevo e basta (Ho scritto sul content degli SMS).
Come URI usavo quello dato da Contacts.CONTENT_URI
codice:
final Cursor c = getContentResolver().query(Contacts.CONTENT_URI, null,
null, null, ContactsContract.Contacts.DISPLAY_NAME);
startManagingCursor(c);
o da Data.CONTENT_URI
codice:
String[] proiezione = new String[] {
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.TYPE };
String where = ContactsContract.Data.CONTACT_ID + " = " + position
+ " AND " + ContactsContract.Data.MIMETYPE + " = \""
+ ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+ "\"";
final Cursor cur = getContentResolver().query(Data.CONTENT_URI,
proiezione, where, null, null);
startManagingCursor(cur);
ArrayList<String> tipo = new ArrayList<String>();
ArrayList<String> numTel = new ArrayList<String>();
ArrayList<Integer> indTipo = new ArrayList<Integer>();
if (cur.moveToFirst()) {
do {
tipoNumTemp = cur
.getString(cur
.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.TYPE));
numTemp = cur
.getString(cur
.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
if (numTemp != null && !numTemp.contentEquals("")) {
numTel.add(numTemp);
indTipo.add(Integer.parseInt(tipoNumTemp));
tipoNumTemp = risorse.getStringArray(R.array.tipo_numero)[Integer
.parseInt(tipoNumTemp) - 1];
tipo.add(tipoNumTemp);
}
} while (cur.moveToNext());
}
Prova a studiarti come ho usato i vari metodi ed applicarli al tuo caso.
E auguri!! :cool:
-
Si infatti quel MimeType non serve a nulla...ora studio i metodi e vediamo che ne esce fuori. Grazie!!
-
Quote:
Originariamente inviato da
mimmog
Si infatti quel MimeType non serve a nulla...ora studio i metodi e vediamo che ne esce fuori. Grazie!!
Ah beh, se posso toglierlo allora torno a lavorarci anch'io :cool:
-
Si si può togliere perchè il MimeType serve per un altra cosa non c'entra in questo caso ;)
-
Ok ragazzi ci nuovi sviluppi ora sono in macchina appena ho un pc sottomano vi dico.. :-)
-
Eccomi qui ! allora ho fatto delle prove di lettura così come consigliato da Deadly e funziona tutto perfettamente. Per la scrittura riscontravo gli stessi ed identici errori di eccezione quindi ho dovuto fare vari tentativi fino ad arrivare a questo codice :
Quote:
ContentValues values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, "1");
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "1-800-GOOG-411");
values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
values.put(Phone.LABEL, "free directory assistance");
Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);
che non permette quello che vorrei fare io, cioè inserire un nuovo contatto in rubrica, bensì permette di aggiungere un nuovo numero di telefono ad un contatto già presente in rubrica ed identificato come vedete dal campo Data.RAW_CONTACT_ID ora mi resta da capire invece come far creare un contatto exnovo passandogli nome, cognome, etc
Vi tengo aggiornati ed intato se qualcuno di buon cuore vuole aiutarmi ben venga ! ;)
-
Quote:
Originariamente inviato da
mimmog
Vi tengo aggiornati ed intato se qualcuno di buon cuore vuole aiutarmi ben venga ! ;)
A me pare che nel libro su Android che ho casa ci sta un esempio per aggiungere un contatto, devo controllare, non vorrei sbagliarmi, stasera guardo e ti faccio sapere ;)
-
-
Eccomi!
Ecco l'esempio preso dal mio libro (per la cronaca si intitola "Android Wireless Application Development" della Addison Wesley, non è proprio il massimo visto che parla di tutto ma senza approfondire mai in modo soddisfacente niente, però per iniziare mi è stato utile):
Spero di non aver sbagliato a trascrivere niente. Questo codice io non l'ho provato, facci sapere se funziona!
Ah, bisogna anche aggiungere al manifest il permesso WRITE_CONTACTS se non l'hai già fatto!
-
Ciao Orochi purtroppo la classe Contacts.Phones è deprecata Contacts.Phones | Android Developers ora di tutto ciò che riguarda i contatti se ne occupa la classe ContactsContract. Oggi l'ho studiata un pochino e devo dire che hanno complicato le cose rispetto a prima, sono riuscito però a recuperare un codice che utilizza questa classe per fare varie cose sui contatti quindi credo che adattandola dovrebbe farmi raggiungere l'obiettivo, stasera me la guardo e poi se funziona posto il codice. Grazie!
-
Quote:
Originariamente inviato da
mimmog
Ciao Orochi purtroppo la classe Contacts.Phones è deprecata
Contacts.Phones | Android Developers ora di tutto ciò che riguarda i contatti se ne occupa la classe ContactsContract. Oggi l'ho studiata un pochino e devo dire che hanno complicato le cose rispetto a prima, sono riuscito però a recuperare un codice che utilizza questa classe per fare varie cose sui contatti quindi credo che adattandola dovrebbe farmi raggiungere l'obiettivo, stasera me la guardo e poi se funziona posto il codice. Grazie!
Infatti il libro risale ad android 1.5... mi spiace
-
Al posto di:
codice:
Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);
Hai provato con:
codice:
Uri dataUri = getContentResolver().insert(Contacts.CONTENT_URI, values);
?
-
Mi sembra di si..ho fatto 2000 prove ma appena posso per sicurezza rifaccio anche questa ma mi sa che ora si deve utilizzare il RawContact per creare il contatto e poi con il Data inserire il numero di telefono