android - 如何从 SD 卡恢复短信到收件箱?

标签 android sms restore android-sdcard

我想将收件箱中的所有消息存储到 sdcard 中,稍后检索并将它们恢复到收件箱中。我已经成功备份消息并将它们存储到 sdcard 中,但我不知道如何检索它们返回并恢复到收件箱。这是我用来备份短信的代码:

private void  backupSMS()
    {
        smsBuffer.clear();
        Uri mSmsinboxQueryUri = Uri.parse("content://sms");
        Cursor cursor1 = getContentResolver().query(
                mSmsinboxQueryUri,
                new String[] { "_id", "thread_id", "address", "person", "date",
                        "body", "type" }, null, null, null);
        //startManagingCursor(cursor1);
        String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                "type" };
        if (cursor1.getCount() > 0) 
        {
            String count = Integer.toString(cursor1.getCount());
            Log.d("Count",count);
            while (cursor1.moveToNext()) 
            {
                 String messageId = cursor1.getString(cursor1
                        .getColumnIndex(columns[0]));

                 String threadId = cursor1.getString(cursor1
                        .getColumnIndex(columns[1]));

                String address = cursor1.getString(cursor1
                        .getColumnIndex(columns[2]));
                String name = cursor1.getString(cursor1
                        .getColumnIndex(columns[3]));
                String date = cursor1.getString(cursor1
                        .getColumnIndex(columns[4]));
                String msg = cursor1.getString(cursor1
                        .getColumnIndex(columns[5]));
                String type = cursor1.getString(cursor1
                        .getColumnIndex(columns[6]));



                smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                        + type);
            }           
          generateCSVFileForSMS(smsBuffer);
        }               
    }

     private void generateCSVFileForSMS(ArrayList<String> list)
     {

         try 
         {
             String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + "Velosys"+".csv";
             FileWriter write = new FileWriter(storage_path);

             write.append("messageId, threadId, Address, Name, Date, msg, type");
             write.append('\n');

             for (String s : list)
             {
                 write.append(s);
                 write.append('\n');
             }
             write.flush();
             write.close();
         }

         catch (NullPointerException e) 
         {
             System.out.println("Nullpointer Exception "+e);
              //  e.printStackTrace();
          }
         catch (IOException e) 
         {
             e.printStackTrace();
         }
         catch (Exception e) 
         {
             e.printStackTrace();
        } 
     }

我搜索了很多但无法找到从 SdCard 的 .csv 文件恢复短信的方法。请帮助我。在此先感谢。

最佳答案

不是查询数据库,而是使用 bulkInsert 的插入将行插入其中。我相信您还需要在 list 中请求对该数据库的写入权限。

关于android - 如何从 SD 卡恢复短信到收件箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14394699/

相关文章:

android - 重用本地下载的 Android 库

android - 即使应用程序被销毁,AsyncTask 也将始终运行?

java - 在共享首选项中保存可用余额

c# - 在同一时间发送短信

java - 通过java发送短信

android - Eclipse android 包不包含库项目中的 .so 文件

java - 连接到互联网时使用 HSPA 调制解调器发送短信

Magento 站点恢复

Android in app billing v3,如何安全地恢复购买?