連絡先リストの CSV ファイルを作成しようとしています。このために私が書いたコードは次のとおりです。
protected Void doInBackground(Void... params) {
String name = "";
String phone = "";
ContentResolver cr = ReadContactsActivity.this.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
File folder = new File(Environment.getExternalStorageDirectory()
+ File.separator + getString(R.string.app_name));
boolean var = false;
if (!folder.exists())
var = folder.mkdir();
final String filename = folder.toString() + "/" + "Test.csv";
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
name = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer
.parseInt(cur.getString(cur
.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()) {
phone = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// objItem = new listBean();
// objItem.setName(name);
// objItem.setNumber(phone);
// listArray.add(objItem);
new Thread() {
public void run() {
try {
FileWriter writer = new FileWriter(filename);
writer.append(name);
writer.append(',');
writer.append(phone);
writer.append('\n');
// generate whatever data you want
writer.flush();
writer.close();
} catch (Exception e) {
}
}
}.start();
}
pCur.close();
}
}
}
return null;
}
run()
メソッドで名前と電話を渡したところ、次のエラーが発生しました。
Cannot refer to a non-final variable name inside an inner class defined in a different method
この問題を解決する方法を提案してください。