Tecnologia do Blogger.
RSS

[androidbrasil-dev] Permissao de ler os contatos do celular

Pessoal, estou tentando criar um hello world que visualiza o contatos do celular, porém estou enfrentando um problema quando clico no contato ele gera um exception. Primeiro tive o problema de permissao da versao 6 (API level 23) que mudou e não e somente add a permissao no manifest porem o codigo abaixo compila, mas quando clico em 1 contato ele exibe a mensagem abaixo, alguem ja passou por isso? se alguém puder dar uma luz desde já agradeço.

------------------ ExemploListaContatos1 --------------
package corp.capsula.exemplolistacontatos1;

import android.Manifest;
import android.app.ListActivity;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ExemploListaContatos1 extends ListActivity {
private ArrayAdapter<String> adaptador;
protected static final String CATEGORIA = "TesteLog";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
habilitaPermissao(Manifest.permission.READ_CONTACTS);

//uri para buscar contatos
Uri uri = ContactsContract.Contacts.CONTENT_URI;
// Recupera o cursor dos contatos
Cursor c = getContentResolver().query(uri,null,null,null,null);

//utiliza o ArrayAdapter, para exibir o array de strings na tela.
ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);

//percorre os elementos do cursor, que sao contatos da agenda
while (c.moveToNext()) {
//le a coluna nome e adiciona no adapter
adaptador.add(c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
}
//informa o adapter responsavel por exibir a lista do listActivity
setListAdapter(adaptador);
c.close();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
//clicou em um item da lista
String s = (String) adaptador.getItem(position);
Toast.makeText(this, "Contato selecionado: " + s, Toast.LENGTH_SHORT).show();
}
protected boolean habilitaPermissao(String permissao) {
int REQUEST_PERMISSIONS_CODE = 0;
//Checa se existe permissao ou seja se o resultado é diferente de PERMISSION_GRANTED
if( ContextCompat.checkSelfPermission(this, permissao) != PackageManager.PERMISSION_GRANTED ){
if( ActivityCompat.shouldShowRequestPermissionRationale(this, permissao) ){
Toast.makeText(this, "É preciso a permission " + permissao + " para apresentação dos eventos locais.", Toast.LENGTH_SHORT).show();
Log.i(CATEGORIA, "É preciso a permission " + permissao + " para apresentação dos eventos locais.");
return true;
}
else{
ActivityCompat.requestPermissions(this, new String[]{permissao}, REQUEST_PERMISSIONS_CODE);
Log.i(CATEGORIA, "pedido de permissao solicitado");
return true;
}
}
else {
Log.i(CATEGORIA, "Permissao negada");
return false;
}
}
}

Log de erro

--------------------------------------------------------------
02-10 03:20:27.455 2897-2897/? D/AndroidRuntime: Shutting down VM
02-10 03:20:27.455 2897-2897/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: corp.capsula.exemplolistacontatos1, PID: 2897
                                                 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.widget.ArrayAdapter.getItem(int)' on a null object reference
                                                     at corp.capsula.exemplolistacontatos1.ExemploListaContatos1.onListItemClick(ExemploListaContatos1.java:48)
                                                     at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
                                                     at android.widget.AdapterView.performItemClick(AdapterView.java:310)
                                                     at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
                                                     at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042)
                                                     at android.widget.AbsListView$3.run(AbsListView.java:3879)
                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                     at android.os.Looper.loop(Looper.java:148)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)


Att.






--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário