我试图从我的应用程序打开一个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 {
}
}
答案 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文档。
您应该重新设计您的概念/逻辑,以便它不依赖于此信息。