Android 安卓-短信显示加密信息
当我向另一个模拟器发送消息时,我可以成功接收短信。但还有一行显示。如何删除第二行?如果使用下面给定的代码更新代码,将非常有用 收件箱类Android 安卓-短信显示加密信息,android,sms,broadcastreceiver,messaging,inbox,Android,Sms,Broadcastreceiver,Messaging,Inbox,当我向另一个模拟器发送消息时,我可以成功接收短信。但还有一行显示。如何删除第二行?如果使用下面给定的代码更新代码,将非常有用 收件箱类 public class Inbox extends Activity implements OnClickListener, OnItemClickListener { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
public class Inbox extends Activity implements OnClickListener, OnItemClickListener
{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox);
this.findViewById( R.id.btn_updateSMS ).setOnClickListener( this );
}
ArrayList<String> msgList = new ArrayList<String>();
public void onItemClick( AdapterView<?> parent, View view, int pos, long id )
{
}
public void onClick( View v )
{
Cursor cursor = getContentResolver().query( Uri.parse( "content://sms/inbox" ), null, null, null, null);
int indexBody = cursor.getColumnIndex( SmsReceiver.BODY );
int indexAddr = cursor.getColumnIndex( SmsReceiver.ADDRESS );
if ( indexBody < 0 || !cursor.moveToFirst() ) return;
msgList.clear();
do
{
String str = "Sender: " + cursor.getString( indexAddr ) + "\n" + cursor.getString( indexBody );
msgList.add( str );
}
while( cursor.moveToNext() );
ListView smsListView = (ListView) findViewById( R.id.msgList );
smsListView.setAdapter( new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, msgList) );
smsListView.setOnItemClickListener( this );
}
}
public class SmsReceiver extends BroadcastReceiver
{
public static final String ADDRESS = "address";
public static final String BODY = "body";
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
public void onReceive( Context context, Intent intent )
{
if (intent.getAction() == SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
}
}
}
}
公共类收件箱扩展活动实现OnClickListener、OnItemClickListener
{
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox);
this.findviewbyd(R.id.btn\u updateSMS).setOnClickListener(this);
}
ArrayList msgList=新的ArrayList();
public void onItemClick(AdapterView父项、视图、整数位置、长id)
{
}
公共void onClick(视图v)
{
Cursor Cursor=getContentResolver().query(Uri.parse(“content://sms/inbox)、空、空、空、空);
int indexBody=cursor.getColumnIndex(SmsReceiver.BODY);
int indexAddr=cursor.getColumnIndex(SmsReceiver.ADDRESS);
if(indexBody<0 | |!cursor.moveToFirst())返回;
msgList.clear();
做
{
String str=“发送方:”+cursor.getString(indexAddr)+“\n”+cursor.getString(indexBody);
msgList.add(str);
}
while(cursor.moveToNext());
ListView smsListView=(ListView)findViewById(R.id.msgList);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,msgList));
smsListView.setOnItemClickListener(此);
}
}
短信接收器类别
public class Inbox extends Activity implements OnClickListener, OnItemClickListener
{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox);
this.findViewById( R.id.btn_updateSMS ).setOnClickListener( this );
}
ArrayList<String> msgList = new ArrayList<String>();
public void onItemClick( AdapterView<?> parent, View view, int pos, long id )
{
}
public void onClick( View v )
{
Cursor cursor = getContentResolver().query( Uri.parse( "content://sms/inbox" ), null, null, null, null);
int indexBody = cursor.getColumnIndex( SmsReceiver.BODY );
int indexAddr = cursor.getColumnIndex( SmsReceiver.ADDRESS );
if ( indexBody < 0 || !cursor.moveToFirst() ) return;
msgList.clear();
do
{
String str = "Sender: " + cursor.getString( indexAddr ) + "\n" + cursor.getString( indexBody );
msgList.add( str );
}
while( cursor.moveToNext() );
ListView smsListView = (ListView) findViewById( R.id.msgList );
smsListView.setAdapter( new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, msgList) );
smsListView.setOnItemClickListener( this );
}
}
public class SmsReceiver extends BroadcastReceiver
{
public static final String ADDRESS = "address";
public static final String BODY = "body";
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
public void onReceive( Context context, Intent intent )
{
if (intent.getAction() == SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
if (messages.length > -1) {
Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
}
}
}
}
公共类SmsReceiver扩展了BroadcastReceiver
{
公共静态最终字符串ADDRESS=“ADDRESS”;
公共静态最终字符串BODY=“BODY”;
私有静态最终字符串SMS_RECEIVED=“android.provider.Telephony.SMS_RECEIVED”;
私有静态最终字符串TAG=“SMSBroadcastReceiver”;
公共void onReceive(上下文、意图)
{
if(intent.getAction()==SMS_已接收){
Bundle=intent.getExtras();
if(bundle!=null){
Object[]pdus=(Object[])bundle.get(“pdus”);
最终SmsMessage[]消息=新SmsMessage[pdus.length];
对于(int i=0;i-1){
Log.i(标记“MessageReceived:+messages[0].getMessageBody());
}
}
}
}
并没有真正理解您的问题,但为什么您自己删除它是一个明显的问题?只需查找(最有可能的)新行字符,并将该部分从消息的开头删除到该位置。在此处删除\n
:
do
{
String str = "Sender: " + cursor.getString( indexAddr ) + "\n" + cursor.getString( indexBody );
msgList.add( str );
}
while( cursor.moveToNext() );
改用
html标记。确保通过fromHtml()
函数解析字符串:
类似于:textView.setText(Html.fromHtml(str));
此外,还应避免使用其他特殊字符,如撇号(
”
)。填写sms列表时,只需添加一个计数器i=1
,每次向列表中添加一条sms时,将其递增。仅当i%2!=0
时,才会添加sms
在我的例子中:
public List<String> getSMS() {
List<String> list = new ArrayList<String>();
Uri uri = Uri.parse("content://sms/inbox");
Cursor c = null;
try{
c = getApplicationContext().getContentResolver().query(uri, null, null ,null,null);
}catch(Exception e){
e.printStackTrace();
}
try{
int i=1;
for (boolean hasData = c.moveToFirst(); hasData; hasData = c.moveToNext()) {
final String address = c.getString(c.getColumnIndex("address"));
final String body = c.getString(c.getColumnIndexOrThrow("body"));
//Android cripta i messaggi, quindi non devo aggiungerli alla lista:
if(i%2!=0)
list.add("Number: " + address + " .Message: " + body);
i++;
}
}catch(Exception e){
e.printStackTrace();
}
// c.close();
return list;
}
public List getSMS(){
列表=新的ArrayList();
Uri=Uri.parse(“content://sms/inbox");
光标c=null;
试一试{
c=getApplicationContext().getContentResolver().query(uri,null,null,null,null);
}捕获(例外e){
e、 printStackTrace();
}
试一试{
int i=1;
for(布尔值hasData=c.moveToFirst();hasData;hasData=c.moveToNext()){
最终字符串地址=c.getString(c.getColumnIndex(“地址”);
最终字符串正文=c.getString(c.getColumnIndexOrThrow(“正文”);
//Android Scripta i messaggi,quindi non devo aggiungerli alla lista:
如果(i%2!=0)
列表。添加(“编号:+地址+”。消息:+正文);
i++;
}
}捕获(例外e){
e、 printStackTrace();
}
//c.关闭();
退货清单;
}
没有。我找不到要删除的新行。我也尝试了大部分尝试和错误的方法来删除它