zoukankan      html  css  js  c++  java
  • android.content.ActivityNotFoundException: No Activity found to handle Intent

    代码如下:

        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.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=sms:xxxxxxxxxxx } 

        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632)

        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)

        at android.app.Activity.startActivityForResult(Activity.java:3424)

    调查如下:

    1,如果手机中没有能发送短信的app就会报出这样的错

    2,手机中的能发送短信的应用被关闭了(设置-->应用-->app-->关闭);

    解决方法:为了避免有的手机没有打开相应文件的app,在startActivity那里做一个try catch

        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);
        }
  • 相关阅读:
    Text Link Ads 注册[赚钱一]
    Linux文件系统中的链接
    C++虚函数和纯虚函数(1)
    Android init reading tips
    Android上GDB的使用
    What is prelink?
    Linux fork哪些被继承,哪些不被继承
    为什么x86 Linux程序起始地址是从0x08048000开始的?
    Android应用开发的插件化 模块化
    C++拷贝构造函数(深拷贝、浅拷贝)
  • 原文地址:https://www.cnblogs.com/xueqiang911226/p/3939374.html
Copyright © 2011-2022 走看看