问题描述
如何在 android 9.0.0 上解决此错误?当我在 android 7 及以下版本上运行时没有错误
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK dat=content://media/external/audio/media }
这是方法
private void pickAudio() {
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i,PICK_AUDIO_REQUEST);
}
解决方法
您可以使用 try catch 来捕获异常并显示警报对话框吗? **注意:我改变了你的方法名称
private void pickAudioIntent() {
try{
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i,PICK_AUDIO_REQUEST);
}catch(Exception e){
//No activity? Display alert Dialog to user
}
您也可以事先检查是否有任何活动可以通过执行以下操作来处理意图
public static boolean isIntentAvailable(Intent intent) {
final PackageManager mgr = mContext.getPackageManager();
List<ResolveInfo> list =
mgr.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
这会将 pickAudioIntent() 更改为:
private void pickAudioIntent() {
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
if(isIntentAvailable(i)){
startActivityForResult(i,PICK_AUDIO_REQUEST);
return;
}
//Show Dialog to user as no intent available
}