こんにちは、サービスを使用して受信トレイを読んでいますが、受信トレイを読み取るカーソルを作成しているときにヌル ポインター例外が発生します。以前は同じコードで SMS を読み取ることができましたが、これらの SMS を SD カードの xml ファイルに保存したいのですが、取得しています。 NULL ポインター例外。どんな助けでも大歓迎です。私のコードはここにあります
//ここにコードを入力
public class CreateBackupXml extends Service
{
CreateBackup createBackup = null;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
public void onCreate(Bundle savedinstance)
{
Log.d("service","inside on create of service");
}
public void onDestroy()
{
}
public void onStart(Intent intent, int startid)
{
Toast.makeText(this, "Creating Back up", Toast.LENGTH_LONG).show();
Log.d("animation", "animation should be Start");
createBackup = new CreateBackup();
createBackup.createXml("all");
}
public class CreateBackup
{
Uri uriSMSURI = Uri.parse("");
Cursor cur=null;
public void createXml(String choice)
{
if(choice=="all")
{
this.readSms("Inbox");
}
}
public void readSms(String folder)
{
if(folder.equals("inbox"))
{
uriSMSURI = Uri.parse("content://sms/inbox");
}
else if(folder.equals("sent"))
{
uriSMSURI = Uri.parse("content://sms/sent");
}
try{
Log.d("folder","inside of inbox");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
Log.d("checking","1111111111111");
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Log.d("checking","2222222222");
Document document = documentBuilder.newDocument();
Log.d("checking","333333333333");
Element rootElement = document.createElement("SMSBackUp");
Log.d("checking","444444444");
rootElement.setAttribute("category", folder);
Log.d("checking","5555555555");
rootElement.setAttribute("owener", "gaurav");
Log.d("checking","6666666666");
cur = getContentResolver().query(uriSMSURI, null, null, null,null);
Log.d("checking",""+cur);
Log.d("checking","7777777777777");
while (cur.moveToNext())
{
Log.d("checking","88888888");
Element smsElement = document.createElement("sms");
rootElement.appendChild(smsElement);
Element text = document.createElement("text");
smsElement.appendChild(text);
text.appendChild(document.createTextNode(cur.getString(11)));
Element phonenoElement = document.createElement("number");
smsElement.appendChild(phonenoElement);
phonenoElement.appendChild(document.createTextNode(cur.getString(2)));
Element nameElement = document.createElement("author");
smsElement.appendChild(nameElement);
nameElement.appendChild(document.createTextNode(getContact(cur.getString(2))));
}
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
Properties outFormat = new Properties();
outFormat.setProperty(OutputKeys.INDENT, "yes");
outFormat.setProperty(OutputKeys.METHOD, "xml");
outFormat.setProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
outFormat.setProperty(OutputKeys.VERSION, "1.0");
outFormat.setProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperties(outFormat);
DOMSource domSource = new DOMSource(document.getDocumentElement());
OutputStream output = new ByteArrayOutputStream();
StreamResult result = new StreamResult(output);
String xmlString = output.toString();
Log.d("output xml",xmlString);
}
catch(Exception e)
{
Log.e("execption ","can not create back up" +e);
}
}
private String getContact(String number)
{
Cursor cur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
String returnName= "";
if(cur.getCount() > 0)
{
while(cur.moveToNext())
{
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
Log.d("Contact","ID:" + id );
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
Log.d("Contact","name:" + name);
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
Cursor pcur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.NUMBER + "=?",new String[]{number},null);
int numindex = pcur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA);
if(pcur.moveToFirst())
{
String dbNum = pcur.getString(numindex);
if(dbNum.equals(number))
{
returnName = name;
Log.d("number","number:" + dbNum);
}
else
{
Log.d("number","numbers dont match!");
}
}
else
{
Log.d("number", "no result");
}
}
else
{
Log.d("number", "No Number");
}
}
}
return returnName;
}
}
}
logcat ビュー
04-05 12:00:07.770: D/reading sms(456): inside of create backup for inbox
04-05 12:00:07.830: D/animation(456): animation should be Start
04-05 12:00:07.830: D/folder(456): inside of inbox
04-05 12:00:07.858: D/checking(456): 1111111111111
04-05 12:00:07.860: D/checking(456): 2222222222
04-05 12:00:07.881: D/checking(456): 333333333333
04-05 12:00:07.890: D/checking(456): 444444444
04-05 12:00:07.920: D/checking(456): 5555555555
04-05 12:00:07.920: D/checking(456): 6666666666
04-05 12:00:07.920: D/checking(456): null
04-05 12:00:07.920: D/checking(456): 7777777777777
04-05 12:00:07.920: E/execption(456): can not create back upjava.lang.NullPointerException