代碼以下:java
public void sendMessage(String number) { if (TextUtils.isEmpty(number)) { return; } Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(Constants.SCHEME_SMS, number, null)); context.startActivity(intent); }
異常信息提示以下:android
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=sms:xxxxxxxxxxx } app
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632)this
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)spa
at android.app.Activity.startActivityForResult(Activity.java:3424)code
調查以下:blog
1,若是手機中沒有能發送短信的app就會報出這樣的錯get
2,手機中的能發送短信的應用被關閉了(設置-->應用-->app-->關閉);it
解決方法:爲了不有的手機沒有打開相應文件的app,在startActivity那裏作一個try catchio
public void sendMessage(String number) { if (TextUtils.isEmpty(number)) { return; } Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(Constants.SCHEME_SMS, number, null)); try { context.startActivity(intent); } catch(ActivityNotFoundException exception) { Toast.makeText(this, "no activity", Toast.LENGTH_SHORT).show(); } }
or 調用系統方法判斷是否有對應的app
public void sendMessage(String number) { if (TextUtils.isEmpty(number)) { return; } Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(Constants.SCHEME_SMS, number, null)); PackageManager packageManager = getPackageManager(); List<ResolveInfo>applist = packageManager.queryIntentActivities(intent, 0); if (applist == null || applist.isEmpty()) { Toast.makeText(this, "no activity", Toast.LENGTH_SHORT).show(); return; } context.startActivity(intent); }