【问题标题】:Intent.resolveActivity(...) or PackageManager.resolveActivity(...) ? When to use what?Intent.resolveActivity(...) 还是 PackageManager.resolveActivity(...) ?什么时候用什么?
【发布时间】:2021-12-23 13:10:30
【问题描述】:

所以这是我的android项目中的一个函数,

private fun openCamAndTakePic() {
        val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        
// activity!!.packageManager.resolveActivity(takePictureIntent,
//                                           PackageManager.MATCH_DEFAULT_ONLY
//                                           ).also {
//                              (or)

   takePictureIntent.resolveActivity(activity!!.packageManager).also{

            val photoFile = createPhotoFile()

            photoURI = createURIForFile(photoFile)

            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoURI)

            startActivityForResult(takePictureIntent,CAMERA_PHOTO_REQUEST)

        }
    }

两者都对我有用。
所以我对使用(或)哪个而不是哪个用于这种事情感到困惑

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    因为有可能找不到活动来处理 Intent。某些设备有时无法支持Intent 上的ACTION_IMAGE_CAPTURE。如果你尝试启动一个活动,但没有匹配,你会得到一个ActivityNotFoundException,所以这个检查试图避免这样的异常。

    【讨论】:

      猜你喜欢
      • 2011-09-28
      • 1970-01-01
      • 2012-08-07
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多