为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查某个活动是否可以处理意图?

如何检查某个活动是否可以处理意图?

慕仙森 2019-12-26 10:05:44
到目前为止,我已经有了这种方法,但是好像缺少了一些东西例如,我有一个文件/sdcard/sound.3ga,该文件返回false(例如没有活动可以处理此类文件),但是当我从文件管理器中打开它时,它可以与媒体播放器一起正常打开我认为这个意图还不完整,我需要做更多的事情来确保只有没有活动可以处理该意图时,handlerExists变量才会为false。PackageManager pm = getPackageManager();Intent intent = new Intent(android.content.Intent.ACTION_VIEW);String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uriString)).toString());String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);intent.setDataAndType(Uri.fromFile(new File(uriString)),mimetype);boolean handlerExists = intent.resolveActivity(pm) != null;
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

edwardxu的解决方案非常适合我。


只是澄清一下:


PackageManager packageManager = getActivity().getPackageManager();

if (intent.resolveActivity(packageManager) != null) {

    startActivity(intent);

} else {

    Log.d(TAG, "No Intent available to handle action");

}


查看完整回答
反对 回复 2019-12-26
?
ibeautiful

TA贡献1993条经验 获得超5个赞

PackageManager manager = context.getPackageManager();

List<ResolveInfo> infos = manager.queryIntentActivities(intent, 0);

if (infos.size() > 0) {

    //Then there is an Application(s) can handle your intent

} else {

    //No Application can handle your intent

}

您是否尝试过此意图?


Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromFile(yourFileHere));


查看完整回答
反对 回复 2019-12-26
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

if (intent.resolveActivity(getPackageManager()) == null) {

    // No Activity found that can handle this intent. 

}

else{

    // There is an activity which can handle this intent. 

}


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 473 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信