【问题标题】:permission to open pdf file in 3rd party app在 3rd 方应用程序中打开 pdf 文件的权限
【发布时间】:2018-02-20 14:48:11
【问题描述】:

我正在尝试从我的应用程序打开一个 pdf 文件,在我的设备上当前安装了 3 个 3rd 方应用程序来打开 pdf 文件。当系统要求我打开 pdf 时,我怎么知道用户选择了一个并按下“确定”或“拒绝”?我的行为由他接受还是拒绝来定义

这是在我的课上:

String path="...../file.pdf";
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "application/pdf");
startActivityForResult(intent, 225);

然后在活动中:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request we're responding to 
    if (requestCode == 225) { 
            // Make sure the request was successful if (resultCode == RESULT_OK) 
    } else {
        
    } 
}

例如屏幕截图

【问题讨论】:

  • 请贴一些代码
  • 这是我的班级:String path="...../file.pdf";意图意图=新意图(意图.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(path)), "application/pdf"); startActivityForResult(intent, 225);
  • 然后在活动中:protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 检查我们响应的是哪个请求 if (requestCode == 225) { // 确保请求成功 if (resultCode == RESULT_OK) { }else{ }
  • 编辑您的问题并包含此代码

标签: android android-intent permissions


【解决方案1】:

您可以使用以下代码在设备上找到所有可以为您的 Intent 提供服务的应用:

List<ResolveInfo> pkgAppsList = context.getPackageManager().queryIntentActivities( mainIntent, 0);

您可以使用其中的信息来查询包并了解它们的显示名称和图标(SO 有很多答案如何做到这一点)。

您可以在应用中创建自己的对话框,该对话框看起来与系统对话框相同。通过这种方式,您将能够跟踪命中并将意图直接传递给选定的包。

祝你好运!

【讨论】:

    【解决方案2】:

    我如何知道用户选择了一个并按下“ok”或“decline”?

    你不能。用于在外部应用程序中打开 pdf 的 ACTION_VIEW 不会返回任何信息。您可以使用startActivityForResult(),但它不会产生任何效果,因为不会设置结果。另请参阅ACTION_VIEW 文档。

    您应该重新设计您的概念/逻辑,使其不依赖于这些信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多