android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=XXX:xxxxx }

报错原因分析

1、可能是你连接的设备没有电话应用(一般这种情况很少)

2、没有指定默认的VIEW

3、指定默认的activity中的data设置的scheme与intent.setData(Uri.parase(“你跳转使用的协议”)) 中的协议不对应

解决问题

1&2、指定默认的VIEW

在Manifest中选定一个activity(作为默认跳转的页面),在相应的intent-filter中添加如下代码即可:

<category android:name="android.intent.category.DEFAULT" />

3、在指定默认activity的代码中设置指定的数据协议部分与其他地方需要跳转的intent.setData() 中保持一致

如在某个activity.java 中代码如下

				Intent intent = new Intent(Intent.ACTION_VIEW);
//                intent.setData(Uri.parse("http://www.baidu.com"));
                intent.setData(Uri.parse("tel:10086"));
                startActivity(intent);

在manifest.xml中的代码如下:

<activity android:name=".ThirdActivity">
	<intent-filter>
		<action android:name="android.intent.action.VIEW" />
		<category android:name="android.intent.category.DEFAULT" />
		<data android:scheme="XXX" />
	</intent-filter>
</activity>

在activity.java 中采用的数据协议是tel, 则manifest.xml 中对应 中的"XXX" 就应该保持一致才行。


版权声明:本文为sclarkca56原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。