Reputation: 554
I am newbie in android technology. just a week before i have started learning .I am trying to send the details about my location with my registered mobile number. It is working fine just in SONY mobile only. can anyone help me. This is the code that i am using.
private void SendSMsandGeocoder() {
Geocoder ageocoder=new Geocoder(myContext);
try {
TelephonyManager atele=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String adata=atele.getDeviceId();
AccountManager AAcm=AccountManager.get(myContext);
Account[] aAccarray=AAcm.getAccounts();
Log.e("account manager",aAccarray.toString());
for (Account ac : aAccarray) {
String acname = ac.name;
String actype = ac.type;
Log.e("acname",acname);
Log.e("actype", actype);
Log.e("account details",acname+actype);
myAcnameget= acname;
}
double mySourcelat =mygpsclass.Findlatitude();
double mySourcelng =mygpsclass.FindLongitude();
Log.e("Gps cordinates", mySourcelat+","+mySourcelng);
List<Address> aList=ageocoder.getFromLocation(mySourcelat, mySourcelng, 2);
String aPlacename=aList.get(0).getLocality();
Log.e("location name",aPlacename);
String aSublocality=aList.get(0).getSubLocality();
Log.e("Sub locality",aSublocality);
String mySourceplace=mySourcelat+","+mySourcelng;
String aaddress=aList.get(0).getFeatureName();
Log.e("feature name",aaddress);
String aaddress1=aList.get(0).getPostalCode();
Log.e("through fare",aaddress1);
String aAddressfull=aSublocality+","+aaddress+","+aPlacename+","+aaddress1;
String aSendmsgcontent="The User Of the IMEI no:"+adata+" was in Co-ordinates:" +mySourceplace+" and their address was "+aAddressfull+","+ myAcnameget;
Log.e("Full address With msg", aSendmsgcontent);
myHashmap=myDbclass.GetConDetails();
myCon1=myHashmap.get("Contact1");
Log.e("Contact 1",myCon1);
myCon2=myHashmap.get("Contact2");
Log.e("Contact 2",myCon2);
myCon3=myHashmap.get("Contact3");
Log.e("Contact 3",myCon3);
myCon4=myHashmap.get("Contact4");
Log.e("Contact 4",myCon4);
myCon5=myHashmap.get("Contact5");
Log.e("Contact 5",myCon5);
SmsManager aSms=SmsManager.getDefault();
aSms.sendTextMessage(myCon1, null,aSendmsgcontent, null, null);
aSms.sendTextMessage(myCon2, null,aSendmsgcontent, null, null);
aSms.sendTextMessage(myCon3, null,aSendmsgcontent, null, null);
aSms.sendTextMessage(myCon4, null,aSendmsgcontent, null, null);
aSms.sendTextMessage(myCon5, null,aSendmsgcontent, null, null);
} catch (Exception e) {
Log.e("sms", e.toString());
}
}
Upvotes: 1
Views: 1798
Reputation: 554
Finally I found the error. I commented out these two lines:
// String aaddress1=aList.get(0).getPostalCode();
// Log.e("through fare",aaddress1);
My code works fine now. Thank you so much @Ajeet.
Upvotes: 0
Reputation: 1560
@ARAVIND RAJ It's easy
In your manifest.xml add
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS" />
Add this in your java
GPSTracker gpsTracker = new GPSTracker(this);
String temp;
if (gpsTracker.canGetLocation())
{
String stringLatitude = String.valueOf(gpsTracker.latitude);
String stringLongitude = String.valueOf(gpsTracker.longitude);
String country = gpsTracker.getCountryName(this);
String city = gpsTracker.getLocality(this);
String postalCode = gpsTracker.getPostalCode(this);
String addressLine = gpsTracker.getAddressLine(this);
temp = stringLatitude + " " + stringLongitude ;
}
else
{
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
}
}
String phoneNo = "123243444" ;// put yout phone number here
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, temp, null, null);
Toast.makeText(getApplicationContext(), "Message Sent",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
ex.printStackTrace();
}
Make a class file as follows
public class GPSTracker extends Service implements LocationListener
{
private final Context mContext;
//flag for GPS Status
boolean isGPSEnabled = false;
//flag for network status
boolean isNetworkEnabled = false;
boolean canGetLocation = false;
Location location;
double latitude;
double longitude;
//The minimum distance to change updates in metters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; //10 metters
//The minimum time beetwen updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
//Declaring a Location Manager
protected LocationManager locationManager;
public GPSTracker(Context context)
{
this.mContext = context;
getLocation();
}
public Location getLocation()
{
try
{
locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
//getting GPS status
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
//getting network status
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled)
{
// no network provider is enabled
}
else
{
this.canGetLocation = true;
//First get location from Network Provider
if (isNetworkEnabled)
{
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network", "Network");
if (locationManager != null)
{
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
updateGPSCoordinates();
}
}
//if GPS Enabled get lat/long using GPS Services
if (isGPSEnabled)
{
if (location == null)
{
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null)
{
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
updateGPSCoordinates();
}
}
}
}
}
catch (Exception e)
{
//e.printStackTrace();
Log.e("Error : Location", "Impossible to connect to LocationManager", e);
}
return location;
}
public void updateGPSCoordinates()
{
if (location != null)
{
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
/**
* Stop using GPS listener
* Calling this function will stop using GPS in your app
*/
public void stopUsingGPS()
{
if (locationManager != null)
{
locationManager.removeUpdates(GPSTracker.this);
}
}
/**
* Function to get latitude
*/
public double getLatitude()
{
if (location != null)
{
latitude = location.getLatitude();
}
return latitude;
}
/**
* Function to get longitude
*/
public double getLongitude()
{
if (location != null)
{
longitude = location.getLongitude();
}
return longitude;
}
/**
* Function to check GPS/wifi enabled
*/
public boolean canGetLocation()
{
return this.canGetLocation;
}
/**
* Get list of address by latitude and longitude
* @return null or List<Address>
*/
public List<Address> getGeocoderAddress(Context context)
{
if (location != null)
{
Geocoder geocoder = new Geocoder(context, Locale.ENGLISH);
try
{
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
return addresses;
}
catch (IOException e)
{
//e.printStackTrace();
Log.e("Error : Geocoder", "Impossible to connect to Geocoder", e);
}
}
return null;
}
/**
* Try to get AddressLine
* @return null or addressLine
*/
public String getAddressLine(Context context)
{
List<Address> addresses = getGeocoderAddress(context);
if (addresses != null && addresses.size() > 0)
{
Address address = addresses.get(0);
String addressLine = address.getAddressLine(0);
return addressLine;
}
else
{
return null;
}
}
/**
* Try to get Locality
* @return null or locality
*/
public String getLocality(Context context)
{
List<Address> addresses = getGeocoderAddress(context);
if (addresses != null && addresses.size() > 0)
{
Address address = addresses.get(0);
String locality = address.getLocality();
return locality;
}
else
{
return null;
}
}
/**
* Try to get Postal Code
* @return null or postalCode
*/
public String getPostalCode(Context context)
{
List<Address> addresses = getGeocoderAddress(context);
if (addresses != null && addresses.size() > 0)
{
Address address = addresses.get(0);
String postalCode = address.getPostalCode();
return postalCode;
}
else
{
return null;
}
}
/**
* Try to get CountryName
* @return null or postalCode
*/
public String getCountryName(Context context)
{
List<Address> addresses = getGeocoderAddress(context);
if (addresses != null && addresses.size() > 0)
{
Address address = addresses.get(0);
String countryName = address.getCountryName();
return countryName;
}
else
{
return null;
}
}
@Override
public void onLocationChanged(Location location)
{
}
@Override
public void onProviderDisabled(String provider)
{
}
@Override
public void onProviderEnabled(String provider)
{
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}
Upvotes: 1