允许在第三方应用中打开pdf文件

时间:2018-02-20 14:48:11

标签: android android-intent permissions

我试图从我的应用程序打开一个pdf文件,在我的设备上当前安装了3个第三方应用程序来打开pdf文件。当系统问我巫婆打开pdf时,我怎么知道用户是否选择了一个并按下" ok"或"拒绝"?如果他接受或拒绝,我的行为定义

这是我班上的:

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 {

    } 
}

屏幕截图例如
enter image description here

2 个答案:

答案 0 :(得分:1)

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

class MyCommand extends yii\db\Command
{
    public function batchInsert($table, $columns, $rows)
    {
        parent::batchInsert($table, $columns, $rows);
        $sql = $this->getRawSql();
        $sql .= ' ON DUPLICATE KEY UPDATE';
        $this->setRawSql($sql);

        return $this;
    }
}

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

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

祝你好运!

答案 1 :(得分:0)

  

我怎么知道用户是否选择了一个并按下" ok"或"拒绝"?

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

您应该重新设计您的概念/逻辑,以便它不依赖于此信息。