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.关闭();
退货清单;
}

没有。我找不到要删除的新行。我也尝试了大部分尝试和错误的方法来删除它