android删除短信整个会话
[功能]
1. 收信箱:显示所有收到的信息 且实时显示 即:当有新信息收到 能自动刷新显示
2. 发信箱:显示所有已发信息 同上
3. 编写新信息: 鉴于一些问题 打算不自行定义 而只通过Intent调用系统的
[原理]
1. 通过目标Uri显示收信箱 发信箱 目标Uri:content://sms/inbox content://sms/sent
2. 实时刷新:一个办法是开辟thread 定时查询目标Uri 显示之 但会带来一些效能影响 所以决定使用ContentObserve监听目标Uri 当有变动 由ContentObserve通知注册方 该Uri:content://sms
3. 注意:ContentObserve不能监听: content://sms/inbox & content://sms/sent 而只能监听content://sms
[代码 步骤]
1. 定义SMSObserver 用于监听目标 并通过Handle通知注册方
-
public
class
SMSObserver
extends
ContentObserver{
-
public
final
static
int
SMS_CHANGE=
0
;
-
-
Handlerhandle;
-
public
SMSObserver(Handlerh){
-
super
(h);
-
-
handle=h;
-
}
-
-
public
void
onChange(
boolean
selfChange){
-
-
super
.onChange(selfChange);
-
-
-
handle.sendEmptyMessage(SMS_CHANGE);
-
}
-
-
}
2. 定义注册方:SMSInbox 鉴于SMSSent与其原理类似 故打算以SMSInbox为例
> 2.1. 显示当前所有收信箱 并与ListView适配
-
lv=(ListView)findViewById(R.id.list);
-
-
cursor=getContentResolver().query(Uri.parse("content://sms/inbox"
),
null
,
null
,
null
,
null
);
-
-
adapter=new
ItemAdapter(
this
);
-
lv.setAdapter(adapter);
> 2.2. 定义Handle 用于接受变动 并注册与ContentObserve 当接到通知后 查询目标Uri 并刷新显示
-
handler=
new
Handler(){
-
public
void
handleMessage(Messagemsg){
-
if
(msg.what==SMSObserver.SMS_CHANGE){
-
cursor=getContentResolver().query(Uri.parse("content://sms/inbox"
),
null
,
null
,
null
,
null
);
-
adapter.notifyDataSetChanged();
-
}
-
-
}
-
};
-
sObserver=new
SMSObserver(handler);
-
this
.getContentResolver().registerContentObserver(Uri.parse(
"content://sms"
),
true
,sObserver);
-
> 2.3. SMSInbox 仅用于显示 收信箱 故定义 SMSDetails extends Activity 用于详细显示 sms信息
- 2.3.1. 定义布局:details.xml
-
<?xmlversion=
"1.0"
encoding=
"utf-8"
?>
-
<LinearLayoutxmlns:Android
="http://schemas.android.com/apk/res/android"
-
android:orientation="vertical"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
>
-
<TextView
-
android:id="@+id/detailsNumber"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
/>
-
<TextView
-
android:id="@+id/detailsBody"
-
android:layout_width="fill_parent"
-
android:layout_height="200dip"
-
/>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:orientation="horizontal"
-
android:layout_width="300dip"
-
android:layout_height="wrap_content"
-
>
-
<Button
-
android:id="@+id/detailsReply"
-
android:layout_width="100dip"
-
android:layout_height="wrap_content"
-
android:layout_gravity="left"
-
android:text="回复"
-
/>
-
<Button
-
android:id="@+id/detailsOK"
-
android:layout_width="100dip"
-
android:layout_height="wrap_content"
-
android:layout_gravity="right"
-
android:text="确定"
-
/>
-
</LinearLayout>
-
</LinearLayout>
- 2.3.2. 其中2个TextView 分别显示信息地址和正文 2个Button 一个用于关闭当前窗口 一个用于短信回复 且自动填充 收信人地址
-
public
class
SMSDetails
extends
Activity{
-
-
TextViewtextNumber,textBody;
-
ButtonbtnOK,btnReply;
-
-
OnClickListenercl;
-
-
Stringaddress,body;
-
-
@Override
-
public
void
onCreate(BundlesavedInstanceState){
-
super
.onCreate(savedInstanceState);
-
setContentView(R.layout.details);
-
-
textNumber=(TextView)findViewById(R.id.detailsNumber);
-
textBody=(TextView)findViewById(R.id.detailsBody);
-
-
btnReply=(Button)findViewById(R.id.detailsReply);
-
btnOK=(Button)findViewById(R.id.detailsOK);
-
-
Intenti=this
.getIntent();
-
Bundlebundle=i.getExtras();
-
-
address=bundle.getString("address"
);
-
body=bundle.getString("body"
);
-
-
textNumber.setText("from:"
+address);
-
textBody.setText("messagebody:\n"
+body);
-
-
cl=new
OnClickListener(){
-
-
@Override
-
public
void
onClick(Viewarg0){
-
-
switch
(arg0.getId()){
-
case
R.id.detailsReply:
-
sendGoNativeNew(address);
-
break
;
-
-
case
R.id.detailsOK:
-
sendBack();
-
break
;
-
}
-
}
-
-
};
-
-
btnReply.setOnClickListener(cl);
-
btnOK.setOnClickListener(cl);
-
}
-
-
public
void
sendGoNativeNew(Stringaddress){
-
-
IntentsendIntent=new
Intent(Intent.ACTION_SENDTO,Uri.parse(
"sms://"
));
-
-
sendIntent.putExtra("address"
,address);
-
-
startActivity(sendIntent);
-
}
-
-
public
void
sendBack(){
-
Intenti=new
Intent();
-
this
.setResult(RESULT_OK,i);
-
this
.finish();
-
}
-
}
- 2.3.3. 点击SMSInbox 某项 跳转到SMSDetails
-
lv.setOnItemClickListener(
new
OnItemClickListener(){
-
@Override
-
public
void
onItemClick(AdapterView<?>arg0,Viewarg1,
int
arg2,
-
long
arg3){
-
-
cursor.moveToPosition(arg2);
-
Stringbody=cursor.getString(cursor.getColumnIndexOrThrow("body"
)).toString();
-
Stringaddress=cursor.getString(cursor.getColumnIndexOrThrow("address"
)).toString();
-
-
Bundleb=new
Bundle();
-
b.putString("body"
,body);
-
b.putString("address"
,address);
-
-
Intentintent=new
Intent(SMSInbox.
this
,SMSDetails.
class
);
-
intent.putExtras(b);
-
-
startActivity(intent);
-
}
-
-
});
- 2.3.4. 其中item.xml 用于定义子项布局
-
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
-
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
-
android:orientation
=
"vertical"
-
android:layout_width
=
"fill_parent"
-
android:layout_height
=
"fill_parent"
-
>
-
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
-
android:orientation
=
"horizontal"
-
android:layout_width
=
"wrap_content"
-
android:layout_height
=
"wrap_content"
-
>
-
<
ImageView
-
android:id
=
"@+id/body"
-
android:layout_width
=
"wrap_content"
-
android:layout_height
=
"wrap_content"
-
/>
-
<
TextView
-
android:id
=
"@+id/num"
-
android:layout_width
=
"wrap_content"
-
android:layout_height
=
col
分享到:
相关推荐
【Android短信拦截机制】 在Android系统中,短信作为重要的通信方式,承载了诸如银行验证码、登录验证、交易通知等敏感信息。然而,由于Android的开放性,恶意软件开发者可以利用系统漏洞来实施短信拦截,从而窃取...
【Android SMSNotify】是一款专为Android...通过对`SMSNotify`源码的学习和理解,开发者不仅可以掌握Android短信通知的实现方式,还能深入了解Android系统的组件交互、权限管理、数据存储以及性能优化等多方面知识。
总结来说,Android的广播机制为应用程序提供了强大的通讯能力,而短信广播截获则能让我们实时监控短信消息。通过理解广播的工作原理,合理选择注册方式,以及正确处理权限和系统限制,我们可以创建出高效且可靠的...
本文将深入探讨“Android短信UI工程文件”所涵盖的关键知识点,包括UI设计原则、布局管理器、控件使用以及Android的Intent机制。 首先,Android UI设计遵循Material Design指南,这是一种统一的视觉语言,旨在提供...
【Android短信应用源码解析】 在Android开发中,构建一个短信应用涉及到许多核心技术和组件的使用。本项目源码提供了一个完整的短信应用实例,通过它我们可以深入理解Android平台上的消息处理、用户界面设计以及与...
以上就是实现一个简易的Android短信管理器涉及的主要技术点,涵盖了Android的权限管理、广播机制、SMSManager、UI设计以及数据库操作等多个方面。通过学习和实践这些知识点,开发者可以构建出功能完善的短信应用。
5. **错误处理**:考虑到并非所有手机都存储了SMSC号码,或者用户可能禁止应用访问短信,因此应该包含适当的错误处理机制。 在实际操作中,可能需要遍历短信表,查找特定类型的短信(例如,系统消息或运营商消息)...
在Android系统中,短信的收发是通过系统的SMS服务来实现的,这涉及到Android的底层通信框架和消息处理机制。本文将深入解析Android源码,探讨短信收发工具的实现,以及如何通过编程接口(API)来控制这个过程。 ...
然而,从Android 6.0(Marshmallow)开始,系统引入了运行时权限机制。即使在`AndroidManifest.xml`中声明了权限,应用程序还需要在运行时请求用户授予`READ_SMS`和`WRITE_SMS`权限。因此,在实际开发中,需要检查...
2.3 Android应用的构成和工作机制 8 第3章 android应用程序结构剖析 9 3.1 Android的API 9 3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细...
在Android系统中,短信服务是核心功能之...在开发过程中,可以参考SMSProject压缩包内的示例代码,它包含了完整的短信拦截和延迟发送功能的实现,通过学习和理解这些代码,你可以更好地掌握Android短信服务的开发技巧。
在Android平台上,短信收发是一项基础且重要的功能。本文将深入探讨如何在Android应用中实现这一功能,特别关注Broadcast...通过实践,开发者可以更好地理解和掌握Android系统的广播机制,提升应用的交互性和功能性。
在Android操作系统中,Intent是一种强大的机制,用于在不同的应用程序组件之间进行通信,或者启动系统服务。当我们想要在我们的应用中启动系统预置的短信界面时,Intent就派上了用场。这个过程涉及到对Android系统...
首先,显示未读短信是Android短信应用的基础。这需要访问Android系统的SMS Provider,这是一个SQLite数据库,存储着手机上的所有短信。通过ContentResolver和Uri类,我们可以查询这个数据库,获取未读短信的内容、发...
首先,Android短信服务主要基于TelephonyManager、SmsManager和ContentProvider等组件。`TelephonyManager`是获取手机通话状态和信息的主要接口,包括获取SIM卡信息、网络状态等。`SmsManager`则负责短信的发送和...
本文将详细介绍 Android 短信SMS发送代码流程的实现机制。 Messaging 应用层 在 Android 中,短信发送功能是通过 Messaging 应用层来实现的。Messaging 应用层负责处理短信的发送和接收操作。在这个层次中,有两个...
以下是关于Android短信发送的详细知识讲解: 一、SMSManager类 在Android中,发送短信主要依赖于`SMSManager`类,它是Android SDK提供的用于处理SMS(Short Message Service)的API。要使用这个类,首先需要在代码...
在Android平台上,实现短信...以上就是关于Android短信发送功能的一些基本实现和技巧。在实际开发中,可以根据项目需求进行适当的调整和优化,例如添加错误处理机制,实现批量发送,或结合网络接口进行更复杂的操作。
以上就是关于"Android发短信小程序"的核心知识点,包括Activity生命周期、Intent机制、权限管理和版本兼容性处理。在实际开发中,还需要注意UI设计、异常处理、用户体验等方面,确保应用的稳定性和易用性。通过学习...
在Android平台上,开发语音识别和短信发送功能是常见的需求,特别是在构建交互式应用程序时。本文将深入探讨如何在Android应用中实现这两个功能。 首先,让我们来看看"yuyin"(语音)部分。在Android中,我们可以...