Note that there are some explanatory texts on larger screens.

plurals
  1. POLocation service GPS Force closed
    text
    copied!<p>Hi i develop an app to locate best location and SMS it to a number . its work fine with network location , but when i want to locating with GPS or Criteria class its become force closed !! its so kind of you to help me tnx.</p> <pre><code>package ir.M410.toolkit; import android.app.Service; import android.content.Intent; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.telephony.SmsManager; import android.util.Log; public class LocationFinder extends Service implements LocationListener{ double lat ,lon ; @Override public IBinder onBind(Intent arg0) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { // We want this service to continue running until it is explicitly // stopped, so return sticky. LocationManager mlocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setPowerRequirement(Criteria.POWER_MEDIUM); String locationprovider = mlocationManager.getBestProvider(criteria, true); Location mlocation = mlocationManager.getLastKnownLocation(locationprovider); lat = mlocation.getLatitude (); lon = mlocation.getLongitude (); Log.i("Geo_Location", "Latitude: " + lat + ", Longitude: " + lon); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("+11231233213", null,"https://maps.google.com/maps?q="+lat+","+lon, null, null); // SmsManager sms = SmsManager.getDefault(); //sms.sendTextMessage(MainActivity.senderNum, null," "+"lat:"+lat+" "+"lon:"+lon, null, null); //stopSelf(); return START_NOT_STICKY; } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub lat= location.getLatitude(); lon =location.getLongitude(); Log.i("Geo_Location", "Latitude: " + lat + ", Longitude: " + lon); // stopSelf(); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onDestroy() { super.onDestroy(); } } </code></pre> <p>and this is my manifest:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ir.M410.toolkit" android:versionCode="1" android:versionName="1.0" &gt; &lt;uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /&gt; &lt;uses-permission android:name="android.permission.RECEIVE_SMS" &gt; &lt;/uses-permission&gt; &lt;uses-permission android:name="android.permission.READ_SMS" &gt; &lt;/uses-permission&gt; &lt;uses-permission android:name="android.permission.SEND_SMS" &gt; &lt;/uses-permission&gt; &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" &gt; &lt;/uses-permission&gt; &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" &gt; &lt;/uses-permission&gt; &lt;uses-permission android:name="android.permission.CALL_PHONE" /&gt; &lt;application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" &gt; &lt;receiver android:name="ir.M410.toolkit.Broadcast_Receiver" &gt; &lt;intent-filter android:priority="2147483647" &gt; &lt;action android:name="android.intent.action.PHONE_STATE" /&gt; &lt;action android:name="android.provider.Telephony.SMS_RECEIVED" /&gt; &lt;action android:name="ir.M410.toolkit.android.action.broadcast" /&gt; &lt;/intent-filter&gt; &lt;/receiver&gt; &lt;service android:name="ir.M410.toolkit.LocationFinder" /&gt; &lt;activity android:name="ir.M410.toolkit.PasswordCheck" android:label="@string/app_name" &gt; &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;category android:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; &lt;/activity&gt; &lt;activity android:name="ir.M410.toolkit.MainActivity" android:label="@string/title_activity_main" android:screenOrientation="portrait" &gt; &lt;/activity&gt; &lt;activity android:name="ir.M410.toolkit.Teturial" android:label="@string/title_activity_teturial" &gt; &lt;/activity&gt; &lt;activity android:name="ir.M410.toolkit.CallDivertActivity" android:label="@string/title_activity_call_divert" &gt; &lt;/activity&gt; &lt;/application&gt; &lt;/manifest&gt; </code></pre> <p>[Edited]and here is LogCat definition :</p> <pre><code>10-14 19:58:37.823: E/AndroidRuntime(2685): FATAL EXCEPTION: main 10-14 19:58:37.823: E/AndroidRuntime(2685): java.lang.RuntimeException: Unable to start service ir.M410.toolkit.LocationFinder@4482e4a8 with Intent { cmp=ir.M410.toolkit/.LocationFinder }: java.lang.NullPointerException 10-14 19:58:37.823: E/AndroidRuntime(2685): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3260) 10-14 19:58:37.823: E/AndroidRuntime(2685): at android.app.ActivityThread.access$3600(ActivityThread.java:135) 10-14 19:58:37.823: E/AndroidRuntime(2685): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2205) 10-14 19:58:37.823: E/AndroidRuntime(2685): at android.os.Handler.dispatchMessage(Handler.java:99) 10-14 19:58:37.823: E/AndroidRuntime(2685): at android.os.Looper.loop(Looper.java:143) 10-14 19:58:37.823: E/AndroidRuntime(2685): at android.app.ActivityThread.main(ActivityThread.java:4914) 10-14 19:58:37.823: E/AndroidRuntime(2685): at java.lang.reflect.Method.invokeNative(Native Method) 10-14 19:58:37.823: E/AndroidRuntime(2685): at java.lang.reflect.Method.invoke(Method.java:521) 10-14 19:58:37.823: E/AndroidRuntime(2685): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 10-14 19:58:37.823: E/AndroidRuntime(2685): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 10-14 19:58:37.823: E/AndroidRuntime(2685): at dalvik.system.NativeStart.main(Native Method) 10-14 19:58:37.823: E/AndroidRuntime(2685): Caused by: java.lang.NullPointerException 10-14 19:58:37.823: E/AndroidRuntime(2685): at ir.M410.toolkit.LocationFinder.onStartCommand(LocationFinder.java:38) 10-14 19:58:37.823: E/AndroidRuntime(2685): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3246) 10-14 19:58:37.823: E/AndroidRuntime(2685): ... 10 more </code></pre> <p>[Edited] code to check not be null :</p> <pre><code>@Override public int onStartCommand(Intent intent, int flags, int startId) { // We want this service to continue running until it is explicitly // stopped, so return sticky. LocationManager mlocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setPowerRequirement(Criteria.POWER_MEDIUM); String locationprovider = mlocationManager.getBestProvider(criteria, true); if(mlocationManager.getLastKnownLocation(locationprovider)!=null){ Location mlocation = mlocationManager.getLastKnownLocation(locationprovider); lat = mlocation.getLatitude (); lon = mlocation.getLongitude (); Log.i("Geo_Location", "Latitude: " + lat + ", Longitude: " + lon); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("+11231233213", null,"https://maps.google.com/maps?q="+lat+","+lon, null, null); } </code></pre> <p>and its ok and not get force close but no data received its always is null !!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload