当前位置:首页 » 安卓系统 » android监听短信数据库

android监听短信数据库

发布时间: 2023-02-15 12:16:22

❶ android开发中,怎样将Broadcast Receiver监听到的短信内容显示在一个Activity中

在你要显示的activity里注册一个广播,通过广播获取数据后直接textview.setText("短信内容啊")

❷ android 数据库怎么监听数据变化

在android中经常会用到改变数据库内容后再去使用数据库更新的内容,很多人会重新去query一遍,但是这样的问题就是程序会特别占内存,而且有可能会搂关cursor而导致程序内存未释放等等。其实android内部提供了一种ContentObserver的东西来监听数据库内容的变化。

ContentObserver的构造函数需要一个参数Hanlder,因为ContentObserver内部使用了一个实现Runnable接口的内部类NotificationRunnable,来实现数据库内容的变化。需要使用hanlder去post消息。注册ContentObserver的方法是:getContentResolver().registerContentObserver(uri, notifyForDescendents, observer).

上面3个参数为:uri----Uri类型,是需要监听的数据库的uri.

notifyForDescendents---boolean true的话就会监听所有与此uri相关的uri。false的话则是直接特殊的uri才会监听。一般都设置为true.

observer-----ContentObserver 就是需要的contentobserver.

初始化一个ContentObserver对象,重载onChange(boolean ),在这个方法里去操作数据库的使用,针对变化后的使用。

写了一个小demo,可以参考下。提示这种监听方式必须是contentprovider才能使用,因为contentprovider有uri.简单的那种sqlite数据库没有uri是使用不了的。

下面demo操作的是在一个activityA里点击button跳转至另外一个activityB,在B中点击button往数据库中加数据,加完后关闭B回到A。A的button的文字自动变化设置到数据库中的字符串。[code]

packagety.com.lto;
02
03importandroid.app.Activity;
04importandroid.content.Intent;
05importandroid.database.ContentObserver;
06importandroid.os.Bundle;
07importandroid.os.Handler;
08importandroid.view.View;
09importandroid.widget.Button;
10
{
12privateButtontestBtn;
13
14@Override
15protectedvoidonCreate(BundlesavedInstanceState){
16super.onCreate(savedInstanceState);
17setContentView(R.layout.listen_data_test);
18getContentResolver().registerContentObserver(DataChangeProvider.CONTENT_URI,
19true,cob);
20
21testBtn=(Button)findViewById(R.id.test_btn);
22testBtn.setOnClickListener(newView.OnClickListener(){
23
24publicvoidonClick(Viewv){
25Intentin=newIntent(ListenDataTest.this,DataChangeTest.class);
26startActivity(in);
27
28}
29});
30
31}
32
33privateContentObservercob=newContentObserver(newHandler()){
34
35@Override
(){
37returnsuper.deliverSelfNotifications();
38}
39
40@Override
41publicvoidonChange(booleanselfChange){
42super.onChange(selfChange);
43testBtn.setText(DataUtils.getChangeName(getApplicationContext()));
44}
45
46};
47
48@Override
49protectedvoidonDestroy(){
50super.onDestroy();
51getContentResolver().unregisterContentObserver(cob);
52}
53
54
55}
[code]01packagety.com.lto;
02
03importandroid.app.Activity;
04importandroid.content.ContentValues;
05importandroid.content.Intent;
06importandroid.database.ContentObservable;
07importandroid.database.ContentObserver;
08importandroid.os.Bundle;
09importandroid.os.Handler;
10importandroid.view.View;
11importandroid.widget.Button;
12
{
14privateButtondataBtn;
15DataSqlitemDataSqlite;
16@Override
17protectedvoidonCreate(BundlesavedInstanceState){
18super.onCreate(savedInstanceState);
19setContentView(R.layout.data_change_test);
20dataBtn=(Button)findViewById(R.id.data_test_btn);
21mDataSqlite=newDataSqlite(this);
22dataBtn.setOnClickListener(newView.OnClickListener(){
23
24publicvoidonClick(Viewv){
25ContentValuescon=newContentValues();
26con.put("name","数据变化了");
27getContentResolver().insert(DataChangeProvider.CONTENT_URI,con);
28finish();
29}
30});
31}
32}
[code]viewsourceprint?
001packagety.com.lto;
002
003
004importandroid.content.ContentProvider;
005importandroid.content.ContentUris;
006importandroid.content.ContentValues;
007importandroid.content.Context;
008importandroid.content.UriMatcher;
009importandroid.database.Cursor;
010importandroid.database.SQLException;
011importandroid.database.sqlite.SQLiteDatabase;
012importandroid.database.sqlite.SQLiteOpenHelper;
013importandroid.database.sqlite.SQLiteQueryBuilder;
014importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
015importandroid.net.Uri;
016importandroid.text.TextUtils;
017
{
;
=1;
_ID=2;
=newUriMatcher(UriMatcher.NO_MATCH);
_URI=Uri.parse("content://ty.com.lto/test");
024
025static{
026sURLMatcher.addURI("ty.com.lto","test",ALARMS);
027sURLMatcher.addURI("ty.com.lto","test/#",ALARMS_ID);
028}
029
{
_DATABASE="test.db";
=1;
033
034publicDatabaseHelper(Contextcontext){
035super(context,TEST_DATABASE,null,VERSION);
036//TODOAuto-generatedconstructorstub
037}
038
039
040@Override
041publicvoidonCreate(SQLiteDatabasedb){
042Stringsql="CREATETABLE"+"test"+"("+
043"_idINTEGERPRIMARYKEY,"+
044"nameTEXT"+
045");";
046db.execSQL(sql);
047}
048
049@Override
050publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
051Stringsql="DROPTABLEIFEXIST"+TEST_DATABASE;
052db.execSQL(sql);
053onCreate(db);
054}
055
056}
057
058publicDataChangeProvider(){
059}
060
061@Override
062publicintdelete(Uriurl,Stringwhere,String[]whereArgs){
063SQLiteDatabasedb=mOpenHelper.getWritableDatabase();
064intcount;
065longrowId=0;
066switch(sURLMatcher.match(url)){
067caseALARMS:
068count=db.delete("test",where,whereArgs);
069break;
070caseALARMS_ID:
071Stringsegment=url.getPathSegments().get(1);
072

❸ android 怎么解决反复监听ContentObserver的问题

最新来的短信,应该是未读的,你可以在onChange()里,判断第一条是不是有未读标志,是的话,再删除呀!

❹ android 短信插入失败怎么判断

什么意思啊? 是操作短信数据库吗?你可以使用 contentobserver类监控短信数据库,插入成功,短信数据库就会发生变化,就会触发这个监听,如果插入失败,这个监听就不会触发. 使用api操作数据库应该也会有返回值啊,判断返回值...

❺ android 开发 一个通过服务端内容自动发送短信到指定号码

服务器和手机端通信,如果要实时通信,就需要使用推送,自己写的推送一般不够好,还是使用专业推送比较好,国内的可以使用极光推送,网络推送等等,如果是国际的可以使用谷歌的google cloud message,或者使用友盟……友盟还是比较靠谱的。

然后手机发送短信只需要一个权限,然后会有很简单的代码就可以发送短信了,而且,一般的第三发推送也可以给服务端发消息,所以你的要求就齐全了。

如果不是用第三方的向服务器报告,也可以自己写和服务器的通信。

如果推送都要自己写,那么android的推送有3种方式,第一socket长连接,比较耗费手机资源和电……第二种轮询,有一点点延迟,看你的实时性有多高……第三种,使用短信息,服务端要有短信网关,手机端则监听手机短信数据库,用这个的比较少,一般长连接比较多。

我的号码就是我qq,有什么问题可以进一步的问我,或者我没时间的话也有很多android开发群 可以介绍给你 随便问问题,有很多高人解答

❻ android怎样实现用代码从数据库获取短信内容等等

数据库获取代码如下:
String databaseFilename = DATABASE_PATH + "/" + DATABASE_NAME;

File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists()) {
InputStream is = context.getResources().openRawResource(R.raw.jobexam);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
db = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);

❼ android开发 接收短信时在哪个文件写入数据库

data文件加下,具体:/data/data/com.android.providers.telephony/dababases/mmssms.db

热点内容
excel的快速访问工具栏 发布:2025-05-17 09:14:58 浏览:1
android360源码 发布:2025-05-17 09:11:47 浏览:76
步科编程软件 发布:2025-05-17 09:09:18 浏览:824
ps4密码设置有什么要求 发布:2025-05-17 08:49:16 浏览:70
文本编译工具 发布:2025-05-17 08:47:47 浏览:3
phpc语言 发布:2025-05-17 08:45:30 浏览:806
苹果6s怎么设置4位密码 发布:2025-05-17 08:41:14 浏览:180
如何玩cf端游越南服务器 发布:2025-05-17 08:38:54 浏览:184
噪声的危害和控制设计脚本 发布:2025-05-17 08:22:29 浏览:474
esr算法 发布:2025-05-17 08:16:09 浏览:195