Java 启动时从android广播短信完成

Java 启动时从android广播短信完成,java,android,Java,Android,每次更换sim卡时,我都会尝试将短信广播到少数手机号码。不幸的是,当我在我的设备上尝试它时,它不起作用。有人能在我下面的代码中识别问题吗。onBoot权限都已添加 public class SendSmsOnTheft extends BroadcastReceiver { static void sendSMS(String destinationAddress, String text, Context context) { Intent intent = new Intent(c

每次更换sim卡时,我都会尝试将短信广播到少数手机号码。不幸的是,当我在我的设备上尝试它时,它不起作用。有人能在我下面的代码中识别问题吗。onBoot权限都已添加

public class SendSmsOnTheft extends BroadcastReceiver
{

static void sendSMS(String destinationAddress, String text, Context context)
{
    Intent intent = new Intent(context, SendSmsOnTheft.class);
    PendingIntent pendingintent = PendingIntent.getActivity(context, 0, intent, 0);
    SmsManager.getDefault().sendTextMessage(destinationAddress, null, text, pendingintent, null);
}

public void onReceive(Context context, Intent intent)
{
        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()))
        {
            Log.d("VogueTools", "Got the Boot Event>>>");
            TelephonyManager telephonymanager = (TelephonyManager)context.getSystemService("phone");
            SharedPreferences sharedpreferences = context.getSharedPreferences("file", 0);
            String number1 = sharedpreferences.getString("no1", "");
            String number2 = sharedpreferences.getString("no2", "");
            String number3 = sharedpreferences.getString("no3", "");
            String number4 = sharedpreferences.getString("no4", "");
            String extra = ("Mobile of IMEI NO: ")+ 
                         telephonymanager.getDeviceId()+
                         " is currently used" +
                         " by the SIM card service provider:" +
                         telephonymanager.getSimOperatorName().toString();
            String simno = sharedpreferences.getString("simno", "");
            String serialno = ((TelephonyManager)context.getSystemService("phone")).getSimSerialNumber();
            if (number1.length() == 0)
            {
                System.exit(0);
            }
            if (simno.equals(serialno))
            {
            sendSMS(number1, extra, context);
            sendSMS(number2, extra, context);
            sendSMS(number3, extra, context);
            sendSMS(number4, extra, context);
            }
        }

    System.exit(0);
    }

}

我想我们需要更多的信息来帮助你。不管怎样,你把收信人登记好了吗?您在申请时一定是这样的:

 <receiver
        android:name=".SendSmsOnTheft"
        android:enabled="true"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
</receiver>

具有以下权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SEND_SMS" />

以下是我在应用程序中出于相同目的使用的代码:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.telephony.TelephonyManager;
import android.telephony.gsm.SmsManager;
import android.util.Log;
import android.widget.Toast;

public class ListeningToBoot extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent)
    {
        // TODO Auto-generated method stub
        if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
        {
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String urphone = tm.getLine1Number();
            Log.v("Uphone","is "+urphone);
            Toast.makeText(context, "MDN:"+urphone, Toast.LENGTH_SHORT).show(); 

            SharedPreferences prefs = context.getSharedPreferences("MySimPreferences", Context.MODE_PRIVATE);
            String mobile_No=prefs.getString("MDN", "un-known");
            Log.v("from shared pref","MDN"+mobile_No);
            String imei=prefs.getString("IMEI", "un-known");
            Log.v("from shared pref","IMEI"+imei);

            if(urphone.equals(mobile_No))
            {
                Log.v("MDN is same","shoudl do nothing");
                Toast.makeText(context, "MDN no change", Toast.LENGTH_LONG).show();
            }
            else
            {
                Log.v("MDN is not same","send a message to someone");
                SharedPreferences prefs_names = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
                String number_to_send=prefs_names.getString("Moblie_Number", "un-known");
                Toast.makeText(context, "MDN changed", Toast.LENGTH_LONG).show();
                String message_to_send="Your mobile number chagned:\nNew Number: "+urphone+"\nIMEI: "+imei;
                SmsManager.getDefault().sendTextMessage(number_to_send, null, message_to_send, null,null);
            }
        }           
    }

}
希望这有帮助


编辑:确保您已在清单文件中授予所有必需的权限。

它是如何工作的?在代码中的哪个点失败?尝试删除系统。退出(0);第二次。显示你的应用程序的日志。你应该告诉我们你的代码在哪里被破坏。。否则,请在此处发布日志!!一点也没有。。该应用程序只是没有表现出它应该做的。谢谢你。我已经重新检查过了,收信人登记正确。谢谢你的帮助。