как запустить действие, позволяющее пользователю выбирать PDF-файл из office lens и получать его

#android

#Android

Вопрос:

  1. Я хочу добавить функциональность для пользователя, позволяющую выбирать PDF-файл из microsoft Office lens и отправлять его в мое приложение с помощью startActivityForResult() метода. Возможно ли это?
  2. Следующий код позволяет пользователю перейти из моего приложения в playstore, а затем в office lens. Как мне перенаправить пользователя непосредственно в office lens

     val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.microsoft.office.officelens"))
    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
    startActivityForResult(intent, IMAGE_PICK_CODE)
      

Комментарии:

1. Intent.ACTION_VIEW не позволяет выбирать содержимое из сторонних приложений. Вы можете попробовать использовать Intent.ACTION_GET_CONTENT с именем пакета этого приложения. Но сначала проверьте, установлено приложение или нет.

Ответ №1:

Ну, я нашел комментарий полезным и придумал это, чтобы решить свою вторую проблему

 val isAppInstalled = appInstalledOrNot("com.microsoft.office.officelens")
        if (isAppInstalled)
        {
            //This intent will help you to launch if the package is already installed
            Toast.makeText(this@ScrollingActivity, "Its toast at if!", Toast.LENGTH_SHORT).show()
            val LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.microsoft.office.officelens")
    startActivityForResult(LaunchIntent, IMAGE_PICK_CODE)
        }
        else
        {
            Toast.makeText(this@ScrollingActivity, "else executed!", Toast.LENGTH_SHORT).show()
            val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.microsoft.office.officelens"))
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            startActivityForResult(intent, IMAGE_PICK_CODE)

        } 
  

эта функция позволяет проверить, установлено приложение или нет

  private fun appInstalledOrNot(uri:String):Boolean {
        val pm = getPackageManager()
        try
        {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES)
            return true
        }
        catch (e:PackageManager.NameNotFoundException) {}
        return false
    }