texto samsung recibir recibe puedo porque pero numero movistar mensajes los llegan enviar envia claro celular android telephony

android - samsung - porque no puedo enviar mensajes de texto de mi celular movistar



Cómo detectar si el dispositivo es capaz de llamar y enviar mensajes. (6)

¿Tal vez puede consultar el PackageManager si el sistema contiene algún componente que pueda responder a los intentos de ACTION_CALL y ACTION_SENDTO? Es posible que deba agregar el esquema "tel:" y "smsto:" en el URI.

Algunos dispositivos es decir. Galaxy Tablet 10.1 solo puede enviar SMS, pero no puede llamar. Algunos otros dispositivos como Asus Transformer ni siquiera tienen tarjeta SIM.

¿Cómo puedo detectar si el dispositivo puede hacer llamadas? ¿Y cómo puedo detectar si el dispositivo puede enviar SMS?


Aquí es lo que hago para comprobar es SMS disponible.

public boolean isAvailable(Context context, Intent intent) { final PackageManager mgr = context.getPackageManager(); List<ResolveInfo> list = mgr.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }

que se toma de developer.android.com .

Y crea un Intento para verificar de esta manera:

Uri smsToUri = Uri.parse("smsto:"); Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); if (isAvailable(intent)) { // do whatever you like. }


Deberias hacer eso:

PackageManager pm = this.getPackageManager(); if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { System.out.println("horray"); } else { System.out.println("nope"); }


Puede usar el siguiente método para verificar si la función de SMS es compatible o no:

private void sendSms(String theNumber, String theMsg) { // TODO Auto-generated method stub String SENT = "Message Sent"; String DELIVERED = "Message Delivered"; PendingIntent sentPI = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(DELIVERED), 0); registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub switch(getResultCode()){ case Activity.RESULT_OK: Toast.makeText(getApplicationContext(), "Message Sent", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getApplicationContext(), "Message Not Sent", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getApplicationContext(), "No Service Available", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(SENT)); registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub switch(getResultCode()){ case Activity.RESULT_OK: Toast.makeText(getApplicationContext(), "Message Delivered", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getApplicationContext(), "Message Not Delivered", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(DELIVERED)); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(theNumber, null, theMsg, sentPI, deliveredPI); }


Usando esta técnica, puedes probar todo tipo de cosas, por ejemplo, brújula, está disponible la ubicación

PackageManager pm = getBaseContext().getPackageManager(); pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);


Usted puede simplemente envolver su código en try / catch. Funciona en todos los casos, incluso con los últimos cambios en la API sobre el envío de SMS.

try{ // code that use telephony features } catch(Exception e){ // code that doesn''t use telephony features }