代码改变世界

Intent跳转activity报错

2016-05-16 18:03  指针空间  阅读(1873)  评论(0编辑  收藏  举报
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
               
                 
startActivityForResult(intent, PICK_CONTACT);

这个跳转为什么部分手机会报错呢??
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK dat=content://com.android.contacts/contacts }
因为有些版本有些rom的android没有提供下载这个activity。或者系统里的那个应用出现问题
像这种使用ACTION隐式启动Activity的,最好在之前先判断是否有对应的Activity可以响应。
if (intent.resolveActivity(getPackageManager()) != null)
{
startActivityForResult(intent, PICK_CONTACT); }

甚至有些Intent会crash(其他帖子看到):startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS
这个问题有可能是直接写class名字,有可能不同版本名字不一样引起的问题
正确做法是,在跳转的时候不写死的Calss名,而是用的系统提供的Settings.ACTION_WIFI_SETTINGS,如果不同版本的Class名不一样,这里action对应的名字应该会变。