完成Android基础02.3隐式Intent实验出现报错及闪退问题求解
修复方案1:解决启动闪退问题
崩溃的核心原因是类型不匹配:XML布局中你定义的三个输入控件是TextView类型,但Java代码中你将其强转为EditText类型,类型转换失败触发RuntimeException直接闪退。
修改方法:将activity_main.xml中id为website_edittext、location_edittext、share_edittext的三个<TextView>标签全部替换为<EditText>:
<!-- 网站输入框 --> <EditText android:id="@+id/website_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/edittext_uri" /> <!-- 位置输入框 --> <EditText android:id="@+id/location_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/edittext_loc" /> <!-- 分享内容输入框 --> <EditText android:id="@+id/share_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/edittext_share" />
建议将原来的android:text属性替换为android:hint,符合输入框的交互逻辑,默认显示提示文字,用户输入时自动清空
修复方案2:解决清单文件声明提示
该提示是Android 11(API级别30)引入的包可见性限制导致:你调用intent.resolveActivity()查询可处理隐式Intent的应用时,系统默认不会返回第三方应用信息,需要在AndroidManifest.xml中添加<queries>声明,该标签与<application>标签同级:
<queries> <!-- 匹配网页跳转意图 --> <intent> <action android:name="android.intent.action.VIEW" /> </intent> <!-- 匹配位置跳转意图 --> <intent> <action android:name="android.intent.action.VIEW" /> <data android:scheme="geo" /> </intent> <!-- 匹配文本分享意图 --> <intent> <action android:name="android.intent.action.SEND" /> <data android:mimeType="text/plain" /> </intent> </queries>
添加完成后提示消失,Android 11及以上版本设备也能正常识别可处理对应意图的应用。
内容的提问来源于stack exchange,提问作者Agung kusuma
相关产品推荐
相关产品推荐

