2014-12-24 16 views
0

我想在收到短信「on_location」時啓用Wi-Fi和GPS。我製作下面的代碼,但應用程序在收到SMS時終止。你能幫我嗎?先謝謝你。收到特定消息時打開Wi-Fi

public class SmsSaveContact extends BroadcastReceiver { 
//private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
//private static final String TAG = "SMSBroadcastReceiver"; 
@Override 
public void onReceive(Context context, Intent intent) { 
    //abortBroadcast(); 
    Bundle myBundle = intent.getExtras(); 
    SmsMessage [] messages = null; 
    String strMessage = ""; 

    if (myBundle != null) 
    { 
     Object [] pdus = (Object[]) myBundle.get("pdus"); 
     messages = new SmsMessage[pdus.length]; 

     for (int i = 0; i < messages.length; i++) 
     { 
      messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      strMessage += "SMS From: " + messages[i].getOriginatingAddress(); 
      strMessage += " : "; 
      strMessage += messages[i].getMessageBody(); 
      //strMessage += "\n"; 
     } 
     if(strMessage.contains("on_location")){ 
      WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
      if(!wifiManager.isWifiEnabled()){ 

        wifiManager.setWifiEnabled(true); 

       }else{ 

        wifiManager.setWifiEnabled(true); 

        }  
     } 
    } 
} 

}

更新的日誌貓:

12-24 20:55:47.846:W/dalvikvm(7356):線程ID = 1:螺紋與未捕獲的異常退出(組= 0x41805c08) 12-24 20:55:47.896:E/AndroidRuntime(7356):致命例外:main 12-24 20:55:47.896:E/AndroidRuntime(7356):進程:com.example.cameraservice,PID: 7356 12-24 20:55:47.896:E/AndroidRuntime(7356):java.lang.RuntimeException:接收廣播意圖時出錯{a ct = android.provider.Telephony.SMS_RECEIVED flg = 0x8000010(has extras)} in [email protected] 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.app.LoadedApk $ ReceiverDispatcher $ Args.run(LoadedApk.java:782) 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.os.Handler.handleCallback(Handler.java:733) 12-24 20 :55:47.896:E/AndroidRuntime(7356):在android.os.Handler.dispatchMessage(Handler.java:95) 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.os.Looper .loop(Looper.java:157) 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.app.ActivityThread.main(ActivityThread.java:5356) 12-24 20:55:47.896 :E/AndroidRuntime(7356):at java.lang.reflect.Method.invokeNative(Native Method) 12-24 20:55:47.896:E/AndroidRuntime(7 356):在java.lang.reflect.Method.invoke(Method.java:515) 12-24 20:55:47.896:E/AndroidRuntime(7356):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller。運行(ZygoteInit.java:1265) 12-24 20:55:47.896:E/AndroidRuntime(7356):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 12-24 20: 55/47.896:E/AndroidRuntime(7356):在dalvik.system.NativeStart.main(本機方法) 12-24 20:55:47.896:E/AndroidRuntime(7356):導致:java.lang.SecurityException:WifiService :用戶10373和當前進程都沒有android.permission.ACCESS_WIFI_STATE。 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.os.Parcel.readException(Parcel.java:1465) 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.os.Parcel.readException(Parcel.java:1419) 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.net.wifi.IWifiManager $ Stub $ Proxy.getWifiEnabledState(IWifiManager.java: 1174) 12-24 20:55:47.896:E/AndroidRuntime(7356):at android.net.wifi.WifiManager.getWifiState(WifiManager.java:1279) 12-24 20:55:47.896:E/AndroidRuntime 7356):at android.net.wifi.WifiManager.isWifiEnabled(WifiManager.java:1291) 12-24 20:55:47.896:E/AndroidRuntime(7356):at com.example.cameraservice.SmsSaveContact.onReceive(SmsSaveContact。 java:37) 12-24 20:55:47.896:E/AndroidRuntime(7356):在android.app.LoadedApk $ ReceiverDispatcher $ Args.run (LoadedApk.java:772) 12-24 20:55:47.896:E/AndroidRuntime(7356):... 9更

+0

安置自己的logcat的一個更好的響應。 –

+0

@JASONGPETERSON我用logcat更新了我的問題。謝謝 – nestorasg

回答

1

在logcat的日誌:

所致:JAVA。 lang.SecurityException:WifiService:用戶10373和當前進程都沒有android.permission.ACCESS_WIFI_STATE。 12-24 20:55:47.896:

將接收消息權限和wifi狀態權限添加到mainfist.xml文件中?

<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
+0

我已經把這兩個加入了我的清單。 – nestorasg

+0

? – mk72

+0

謝謝,我已修復它。這是在清單 – nestorasg

0
<receiver android:name=".SmsSaveContact"> 

     <intent-filter android:priority="999"> 

      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 

...........

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />