我正在使用Android 2.1 platform.Going做一個基於DropBox.I項目使用DBUtility類在DropBox中列出聯繫人。 DBUtility不是一個主類。它是一個子類。主類調用這個類的一些函數。類不工作,錯誤發生?
有人seperately工作良好,Createfolder()在下面的代碼只包含一個聲明
mDBApi.createFolder( 「聯繫人」);
有作爲above.when我提到的基礎上增加了聯繫。我的一些代碼有錯誤像
無差錯「的方法getContentResolver()是未定義的類型DropBoxUtility」。
代碼
public class DropBoxUtility {
private DropboxAPI<AndroidAuthSession> mDBApi;
public DropBoxUtility(DropboxAPI<AndroidAuthSession> Api) {
mDBApi = Api;
}
public void ContactFolder() throws DropboxException {
mDBApi.createFolder("Contacts");
ArrayAdapter<String>itemAdapter;
ArrayList<String> contactlist = new ArrayList<String>();
String displayName="All Contacts Here";
ByteArrayInputStream inputStream = new ByteArrayInputStream(displayName.getBytes());
Entry newEntry = mDBApi.putFile("Contacts/abhi.doc", inputStream, displayName.length(), null, null);
/* I got Error on this line */
ContentResolver cr = getContentResolver() ;
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
displayName = "";
displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String holder = "";
holder = holder + displayName;
/* Phone Number and Type */
ArrayList<String> phoneList = new ArrayList<String>();
if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
while (pCur.moveToNext()) {
int phoneType = pCur
.getInt(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
String pnum = pCur.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
switch (phoneType) {
case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
phoneList.add(", Home, "+pnum);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
phoneList.add(", Work, "+pnum);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
phoneList.add(", Mobile, "+pnum);
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER:
phoneList.add(", Other, "+pnum);
break;
}
} // end of while
pCur.close();
} // end of if
/* Email */
Cursor emails = cr.query(Email.CONTENT_URI, null, Email.CONTACT_ID
+ " = " + id, null, null);
ArrayList<String> emailList = new ArrayList<String>();
while (emails.moveToNext()) {
int emailType = emails
.getInt(emails
.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
String email = emails.getString(emails
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
switch (emailType) {
case ContactsContract.CommonDataKinds.Email.TYPE_HOME:
emailList.add(", Home, "+email);
break;
case ContactsContract.CommonDataKinds.Email.TYPE_WORK:
emailList.add(", Work, "+email);
break;
case ContactsContract.CommonDataKinds.Email.TYPE_MOBILE:
emailList.add(", Mobile, "+email);
break;
case ContactsContract.CommonDataKinds.Email.TYPE_OTHER:
emailList.add(", Other, "+email);
break;
}
}
emails.close();
if(phoneList.size()>=emailList.size()) {
for(int i=0;i<phoneList.size();i++) {
holder = displayName + phoneList.get(i);
try{
holder = holder + emailList.get(i);
}catch(Exception ex){
holder = holder + ", , ";
}
contactlist.add(holder);
}
}else {
for(int i=0;i<emailList.size();i++) {
try{
holder = displayName+ phoneList.get(i);
}catch(Exception ex){
holder = holder + ", , ";
}
holder = holder + emailList.get(i);
contactlist.add(holder);
}
}
}
Collections.sort(contactlist);
cursor.close();
}
logcat的
07-05 14:57:54.734: W/dalvikvm(392): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
07-05 14:57:54.734: E/AndroidRuntime(392): Uncaught handler: thread main exiting due to uncaught exception
07-05 14:57:54.744: E/AndroidRuntime(392): java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/contacts from pid=392, uid=10028 requires android.permission.READ_CONTACTS
07-05 14:57:54.744: E/AndroidRuntime(392): at android.os.Parcel.readException(Parcel.java:1218)
07-05 14:57:54.744: E/AndroidRuntime(392): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
07-05 14:57:54.744: E/AndroidRuntime(392): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
07-05 14:57:54.744: E/AndroidRuntime(392): at android.content.ContentProviderProxy.bulkQuery(ContentProviderNative.java:326)
07-05 14:57:54.744: E/AndroidRuntime(392): at android.content.ContentProviderProxy.query(ContentProviderNative.java:345)
07-05 14:57:54.744: E/AndroidRuntime(392): at android.content.ContentResolver.query(ContentResolver.java:202)
07-05 14:57:54.744: E/AndroidRuntime(392): at com.abhi.DropBoxUtility.ContactFolder(DropBoxUtility.java:47)
如何解決這個問題呢?
@Hari你更改定義我展示給你的DropBoxUtility類和構造函數?你從哪裏實例化類?它可以從一個活動或某個有「上下文」的地方完成。 – 2012-07-05 08:58:09
我編輯我的代碼... mDBApi = new DropboxAPI(session); \t \t mDbUtility = new DropBoxUtility(mDBApi); \t \t mDbUtility = new DropBoxUtility(mDBApi,this); \t \t setContentView(R.layout.main); –
Hari
2012-07-05 09:06:31
它現在正在工作,但應用程序意外停止..我發佈了logcat錯誤 – Hari 2012-07-05 09:30:00