亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Android短信備份及數據插入實現代碼解析

瀏覽:13日期:2022-09-21 17:06:43

實現備份短信到xml文件和像短信中插入一條數據

一、實現短信將備份到xml文件中

在布局文件中定義一個按鈕,定義點擊事件為copyClick

MainActivity.java:

package com.lgqrlchinese.heima76android_copysms;import android.Manifest;import android.content.pm.PackageManager;import android.database.Cursor;import android.net.Uri;import android.os.Environment;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Xml;import android.view.View;import android.widget.Toast;import org.xmlpull.v1.XmlSerializer;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class MainActivity extends AppCompatActivity { //動態獲取權限 static final String[] PERMISSION = new String[]{ Manifest.permission.READ_SMS, Manifest.permission.WRITE_EXTERNAL_STORAGE, }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //動態獲取權限 MyPermission(); } //點擊按鈕查詢短信數據庫內容,然后備份 public void copyClick(View view) { try { //獲取xml序列化實例 XmlSerializer serializer = Xml.newSerializer(); //設置序列化參數 File file = new File(Environment.getExternalStorageDirectory().getPath(), 'smsBackUp.xml'); FileOutputStream fos = new FileOutputStream(file); serializer.setOutput(fos, 'utf-8'); //開始寫xml文檔的開頭 serializer.startDocument('utf-8', true); //開始寫根節點 serializer.startTag(null, 'smss'); //短信數據庫內容也通過內容提供者暴露出來,所以我們只需要通過內容解析者去操作數據庫 Uri uri = Uri.parse('content://sms/'); Cursor cursor = getContentResolver().query(uri, new String[]{'address', 'date', 'body'}, null, null, null); while (cursor.moveToNext()) {String address = cursor.getString(0);String date = cursor.getString(1);String body = cursor.getString(2);//寫sms節點serializer.startTag(null, 'sms');//寫address節點serializer.startTag(null, 'address');serializer.text(address);serializer.endTag(null, 'address');//寫body節點serializer.startTag(null, 'body');serializer.text(body);serializer.endTag(null, 'body');//寫date節點serializer.startTag(null, 'date');serializer.text(date);serializer.endTag(null, 'date');serializer.endTag(null, 'sms'); } serializer.endTag(null, 'smss'); serializer.endDocument(); } catch (FileNotFoundException e) { e.printStackTrace(); System.out.println('異常1'); } catch (IOException e) { e.printStackTrace(); System.out.println('異常2'); } } //動態獲取權限 public void MyPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { //Android 6.0申請權限 ActivityCompat.requestPermissions(this, PERMISSION, 1); } else { Toast.makeText(this, '成功', Toast.LENGTH_SHORT).show(); } }}

當然權限是必要的

<uses-permission android:name='android.permission.READ_SMS'/> <uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE'/>

這樣就在SD卡根目錄備份了xml文件

在真機6.0測試中遇到存儲address崩潰問題,調試好久。先打印addredss,沒有問題;存儲死數據沒有問題,最后發現在輸出打印室有個address為null。查看手機,是因為有個短信草稿,我想了兩個都能想到的的解決辦法:

1.刪除或發送手機里的草稿

2.在代碼中進行判斷

if (address != null) { serializer.startTag(null, 'address'); serializer.text(address); serializer.endTag(null, 'address');} else { serializer.text('這是草稿');}

二、向短信的數據庫中插入數據(5.0及之后就不允許外部應用修改,直允許讀取,不做過多記錄)

import android.Manifest;import android.content.ContentValues;import android.content.pm.PackageManager;import android.net.Uri;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Toast;public class MainActivity extends AppCompatActivity { //動態獲取權限 static final String[] PERMISSION = new String[]{ Manifest.permission.READ_SMS, }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyPermission(); } //點擊按鈕在短信數據庫插入數據 public void insertClick(View view) { Uri uri = Uri.parse('ocntent://sms'); ContentValues values = new ContentValues(); values.put('address', '17865318803'); values.put('body', '我是你的影子'); values.put('date', System.currentTimeMillis()); getContentResolver().insert(uri, values); } //動態獲取權限 public void MyPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { //Android 6.0申請權限 ActivityCompat.requestPermissions(this, PERMISSION, 1); } else { Toast.makeText(this, '成功', Toast.LENGTH_SHORT).show(); } }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 精品视频久久 | 黄色片短视频 | 特黄a大片免费视频 | 久久东京伊人一本到鬼色 | 91极品视频 | 特黄黄三级视频在线观看 | 国产成人综合久久精品亚洲 | 国产毛片网站 | 一区二区三区视频在线观看 | 99久热在线精品视频观看 | 日本一本久道 | 国产一级自拍 | 亚洲一区二区免费视频 | 精品国产高清a毛片 | 国内偷自视频区视频综合 | 免费一级毛片在线观看 | 国产一区二区三区高清 | 国产精品一区欧美日韩制服 | 欧美日韩在线精品一区二区三区 | a毛片视频| 高清一区二区三区视频 | 无遮挡一级毛片私人影院 | 日本精品一区二区三本中文 | 欧美性猛交xxx免费看人妖 | 女人被男人狂躁免费视频 | 国产高清免费视频 | 热99re国产久热在线 | 一级特黄录像免费播放中文 | 黄色自拍视频 | 99久久精品无码一区二区毛片 | 偷拍自拍日韩 | 久久精品国产免费高清 | 成人免费网站 | 日本不卡在线一区二区三区视频 | 国产伦精品一区二区三区网站 | 亚洲国产婷婷香蕉久久久久久 | 麻豆精品永久免费视频 | 国产在线ts人妖免费视频 | 一级生活毛片 | 国产在线视欧美亚综合 | 在线观看人成网站深夜免费 |