2014-01-30 12 views
0

我試圖在每次SIM卡更改時都將短信廣播到少數手機號碼。不幸的是,當我在我的設備上嘗試它時,它不起作用。請有人在我的下面的代碼中找出問題。 onBoot權限全部添加。從開機完成的Brodcasting短信完成

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); 
    } 

} 
+4

它不起作用?代碼中的哪一點會失敗? –

+0

嘗試刪除System.exit(0);第二次。 –

+1

顯示你的App的Logcat。 – Neo

回答

0

這裏是我在我的應用程序用於相同目的的代碼:

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

非常感謝。你的代碼幫了我很多。 – superraf

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" /> 
+0

謝謝你。我已重新檢查並且接收器已正確註冊。謝謝你的幫助。 – superraf