Como enviar por mensaje de texto mi ubicación y coordenadas del gps

ACTUALIZACIÓN
-Debido a que muchos usuarios tienen error se actualizo:
-Permisos para obtener las coordenadas
-Permisos para enviar los mensajes
Deben aceptar el mensaje que les sale al momento de usar la aplicación o no funcionara.

Buenas hoy veremos un tutorial que me han estado pidiendo como enviar por un mensaje de texto a otro celular mis coordenadas y la dirección de la calle. Alguno le llaman a este ejercicio PanicButton, porque la idea es que si estuvieras en peligro o tengas la necesidad de enviar tu localización, se haría con un simple clic.

Bien necesitamos lo siguiente:
2 textview
-txtCoordenadas
-txtDireccion

1Button
– btnEnviar

Bien ahora vamos a la codificación, nuestro MainActivity.java tendrá lo siguiente.Pon el numero de celular a donde quieres que llegue el mensaje donde dice  “Aquí tu numero de celular”;

MainActivity.java

public class MainActivity extends Activity implements LocationListener {
    protected LocationManager locationManager;
    TextView coordenadas;
    TextView direccion;
    Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, 1000);
} else {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1000, this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1000, this);

}

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.btnEnviar);

button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

try {
TextView co = (TextView) findViewById(R.id.txtCoordenadas);
TextView di = (TextView) findViewById(R.id.txtDireccion);
String messageToSend = co.getText().toString();
String messageToSend2 = di.getText().toString();
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.SEND_SMS)) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.SEND_SMS}, 1);
} else {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.SEND_SMS}, 1);
}
}else {
String number = "Aquí tu numero de celular";

SmsManager.getDefault().sendTextMessage(number, null, messageToSend2 + "n" +
messageToSend, null, null);
}
    Toast.makeText(getApplicationContext(), "Mensaje Enviado!",
    Toast.LENGTH_LONG).show();
} catch (Exception e) {
    Toast.makeText(getApplicationContext(), "Fallo el envio!",
    Toast.LENGTH_LONG).show();
e.printStackTrace();
 }
 }
 });
}

@Override
public void onLocationChanged(Location location) {
coordenadas = (TextView) findViewById(R.id.txtCoordenadas);
direccion = (TextView) findViewById(R.id.txtDireccion);
coordenadas.setText("Mi ubicacion actual es: " + "n Lat = "
+ location.getLatitude() + "n Long = " + location.getLongitude());
this.setLocation(location);
}
public void setLocation(Location location) {
//Obtener la direccion de la calle a partir de la latitud y la longitud
if (location.getLatitude() != 0.0 && location.getLongitude() != 0.0) {
try {
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> list = geocoder.getFromLocation(
location.getLatitude(), location.getLongitude(), 1);
if (!list.isEmpty()) {
Address DirCalle = list.get(0);
direccion.setText("Mi direccion es: n"
+ DirCalle.getAddressLine(0));
 }

} catch (IOException e) {
e.printStackTrace();
 }
  }
}

@Override
public void onProviderDisabled(String provider) {
Log.d("Latitude","disable");
}

@Override
public void onProviderEnabled(String provider) {
Log.d("Latitude","enable");

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Latitude","status");
 }

}

Hay que dar unos permisos en nuestro AndroidManifest.xml

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidmorefast.moden.apppanicbuttonv2">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.
    ACCESS_FINE_LOCATION" />
    <uses-permission
        android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission
        android:name="android.permission.ACCESS_COARSE_LOCATION"/>
   <uses-permission android:name="android.permission.SEND_SMS"/>
<application         
  android:allowBackup="true"        
  android:icon="@mipmap/ic_launcher"       
  android:label="@string/app_name"        
  android:supportsRtl="true"       
  android:theme="@style/AppTheme">       
 <activity android:name=".MainActivity">          
  <intent-filter>               
 <action android:name="android.intent.action.MAIN" />               
  <category android:name="android.intent.category.LAUNCHER" /> 
           </intent-filter>        
 </activity>    
</application>
</manifest>


Y este es el resultado Final: Quite mi numero de celular, por las ingenieras acosadoras jajaja

Bien ahora les dejo en enlace de descarga:

19 comentarios en «Como enviar por mensaje de texto mi ubicación y coordenadas del gps»

  1. Renchon

    Al momento de correrlo virtualmente y dar clic en el boton me manda un error "Could not find a method onClick(View) in the activity"
    y como se solucionaria?
    gracias de antemano

  2. AndroFast

    Hola este ejercicio toma la dirección de dispositivos físicos que tengan gps en caso contrario no funciona como por ejemplo algunos emuladores que no traen, pero podría intentar usar el emulador genymotion que si soporta el gps.

  3. AndroFast

    No te dejaba enviar mensajes porque había que actualizar permisos, lo acabo de actualizar puedes volver a descargar ya no te dará problemas, solo debes aceptar los permisos a la hora que se ejecuta la aplicación, saludos.

  4. Pingback: como enviar la direccion y coordenadas del gps a una base de datos de forma automatica en android studio | ANDROFAST

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

WhatsApp chat