2014-12-10 3 views
0

Я хочу отправить SMS с моим приложением с:Android Отправить SMS Краш

Intent smsIntent = new Intent(Intent.ACTION_VIEW); 
smsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
smsIntent.setData(Uri.parse("smsto:" + sms)); 
smsIntent.putExtra("smsto", sms); 
smsIntent.putExtra("sms_body", "MYSMSBOBY"); 
mActivity.startActivity(smsIntent); 

Это отлично работает в устройствах, которые есть SMS Application, но в некоторых устройствах я получаю эту ошибку аварии:

No Activity found to handle Intent { act=android.intent.action.VIEW dat=smsto:xxxxxxxxxx flg=0x10000000 (has extras) } 

Любая идея, как я могу узнать, установлено ли приложение SMS на устройстве?

+0

поймать ActivityNotFoundException – jenuine

ответ

1

Any idea how i can recognize if SMS Application installed on the device?

В то время как вы можете использовать PackageManager, чтобы увидеть, есть ли приложение для обработки вашего намерения, это не должно быть на самом деле ваше беспокойство на всех. То, что вы должны заботиться о только сама авария, так что вместо того, чтобы просто:

mActivity.startActivity(smsIntent); 

вы должны по крайней мере общий код обработки исключений:

try { 
    mActivity.startActivity(smsIntent); 
} catch (Exception e) { 
    e.printStackTrace(); 
    // show toast or something so user knows why it is not working 
} 

и поймать любую неудачу startActivity(). Вы также можете сделать создать отдельный catch для этого конкретного типа исключения, ActivityNotFoundException

+0

ActivityNotFoundException – jenuine

0
<!-- SMS --> 
<uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 


    /** 
    * Test if device can send SMS 
    * @param context 
    * @return 
    */ 
    public static boolean canSendSMS(Context context) { 
     return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY); 
    } 
Смежные вопросы