Android Sim卡跟踪器代码

Android Sim卡跟踪器代码,android,tracking,Android,Tracking,嗨 我正在制作一个应用程序,其中我正在检测SIM卡是否已更改。。? 安装我的应用程序时,我将当前SIM卡序列号存储在共享首选项中。 开机时,我注册了一个广播接收器。在onReceive()方法中,我访问当前SIM卡序列号,并将其与安装时存储的序列号进行比较, 以下是我的接收代码: package com.secuirity.sms; import org.apache.harmony.xnet.provider.jsse.GMailSender; import and

我正在制作一个应用程序,其中我正在检测SIM卡是否已更改。。? 安装我的应用程序时,我将当前SIM卡序列号存储在共享首选项中。 开机时,我注册了一个广播接收器。在
onReceive()
方法中,我访问当前SIM卡序列号,并将其与安装时存储的序列号进行比较, 以下是我的接收代码:

    package com.secuirity.sms;

    import org.apache.harmony.xnet.provider.jsse.GMailSender;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.os.AsyncTask;
    import android.telephony.SmsManager;
    import android.telephony.TelephonyManager;
    import android.util.Log;

    public class BootUpReciever extends BroadcastReceiver{

    Context context;
    String email;
    String currentSimSerial;
    SharedPreferences settings;
    SmsManager smsMgr = SmsManager.getDefault();
    public static final String PREFS_NAME = "MyPrefsFile";

    @Override
    public void onReceive(Context context, Intent intent) {

        settings = context.getSharedPreferences(PREFS_NAME, 0);
        String storedSimSerial = settings.getString("storedSimSerial", null);
        Log.d("Stored Sim Serial::",storedSimSerial);

        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        currentSimSerial = tm.getSimSerialNumber();
        Log.d("Current Sim Serial","::"+currentSimSerial);
        String trustedNum = settings.getString("cellno", null);
        email = settings.getString("email", null);

        if(currentSimSerial == storedSimSerial){

        }else{
            Log.d("Sim changed","!!!");
            new GmailAsync().execute("");
            String sms = "Sim card has changed, " +
                    "Sim Serial Number of this card is\n"+currentSimSerial+
                    "Network Operator"+tm.getNetworkOperatorName();
            smsMgr.sendTextMessage(trustedNum, null,sms, null, null);
        }

        Intent sms = new Intent(context, SMSReceiver.class);
        sms.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(sms);

        Intent netAvailability = new Intent(context, CheckingNetworkAvailability.class);
        netAvailability.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(netAvailability); 
    }
    public class GmailAsync extends AsyncTask<String, Void, String>{

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            String mail_body = "Sim serial number is "+currentSimSerial;
            String subject = "Your Sim has changed!!!";         
            GMailSender sender = new GMailSender("securemob.viasms@gmail.com", "smsfun890");
            try {
                sender.sendMail(subject,
                        mail_body+"\nThanks for using Mobile Security App",
                        "securemob.viasms@gmail.com",
                        email,null);
            } catch (Exception e) {
                Log.e("SendMail", e.getMessage(), e);
            }
            return null;
        }
        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            Log.d("Mail","Sent");
        }
    }
}
package com.secuirity.sms;
导入org.apache.harmony.xnet.provider.jsse.GMailSender;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.os.AsyncTask;
导入android.telephony.smsmsmanager;
导入android.telephony.TelephonyManager;
导入android.util.Log;
公共类BootUpReciever扩展BroadcastReceiver{
语境;
字符串电子邮件;
字符串序列;
共享引用设置;
SmsManager smgr=smsmsmanager.getDefault();
公共静态最终字符串PREFS\u NAME=“MyPrefsFile”;
@凌驾
公共void onReceive(上下文、意图){
设置=context.getSharedReferences(PREFS_NAME,0);
String storedSimSerial=settings.getString(“storedSimSerial”,null);
Log.d(“存储的Sim序列::”,存储的Sim序列);
TelephonyManager tm=(TelephonyManager)context.getSystemService(context.TELEPHONY_服务);
currentSimSerial=tm.getSimSerialNumber();
Log.d(“当前Sim串行”,“当前Sim串行”,“当前Sim串行”);
String trustedNum=settings.getString(“cellno”,null);
email=settings.getString(“email”,null);
if(currentSimSerial==storedSimSerial){
}否则{
Log.d(“Sim已更改”,“!!!”);
新建gmailsync().execute(“”);
String sms=“Sim卡已更改,”+
“此卡的Sim序列号为\n”+当前Sim序列号+
“网络运营商”+tm.getNetworkOperatorName();
smgr.sendTextMessage(trustedNum,null,sms,null,null);
}
意向sms=新意向(上下文,SMSReceiver.class);
sms.addFlags(意图、标志、活动、新任务);
背景。起始触觉(sms);
Intent netAvailability=新Intent(上下文,CheckingNetworkAvailability.class);
netAvailability.addFlags(意图、标志、活动、新任务);
背景。startActivity(netAvailability);
}
公共类Gmail同步扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
字符串mail_body=“Sim序列号为”+currentSimSerial;
String subject=“您的Sim卡已更改!!!”;
GMailSender=新的GMailSender(“securemob。viasms@gmail.com“,“smsfun890”);
试一试{
发件人。sendMail(主题,
mail_body+“\n使用移动安全应用程序的帐户”,
“乌合之众。viasms@gmail.com",
电子邮件(空);
}捕获(例外e){
Log.e(“SendMail”,e.getMessage(),e);
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
日志d(“邮件”、“已发送”);
}
}
}
但它不起作用(:(:(
我有以下权限读取“手机状态”和“接收启动完成”

我看不出您的代码有任何错误,但我要检查的第一件事是您是否有权限读取清单中设置的SIM卡。

伙计们,我找到了启动接收器的解决方案。。。。 当android mobile启动时,此事件将广播到每个应用程序,但安装在内存中的应用程序与存储在SD卡上的应用程序相比会很快响应。 因此,解决方案是

android:installLocation="internalOnly"

在清单文件中作为清单属性。

Ohh抱歉……它不起作用……。不知道为什么……:(还有什么不起作用?“它不起作用”…对我们也没有多大帮助。请描述什么不起作用,你是否有错误,代码是否未激活,…此外,试着给出一个简单的例子来说明你的问题。不要把你所有的代码都放在这里,然后要求修复!你能指出什么是错的吗?打印日志cat f或者,在启动时,我没有收到任何消息或邮件表明您的sim卡已更改……。我现在看到您即将列出您的权限。您只是厌倦了键入或其他内容吗?我有以下权限:Lol…。没有这样的权限。我不懒于键入我喜欢ctrl+c和ctrl+v,实际上它没有显示…。k,您要继续吗您需要更清楚地了解您需要的帮助。因此,当您启动应用程序时,它不会崩溃?您期望发生什么以及实际发生了什么?当您说启动时在Log Cat中什么都没有..这些行的输出如何,Log.d(“存储的Sim序列:”,storedSimSerial);Log.d(“当前的Sim序列,”::“+currentSimSerial);您从它们那里有任何输出吗?