使用Intent.createChooser()在Nougat上没有FileProvider的情况下工作正常

时间:2017-09-13 15:15:31

标签: android android-fileprovider

我注意到有趣的事情。当我使用自己的意图将文件发送到另一个应用程序而不使用FileProvider:

    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    sendIntent.setType("image/gif");
    sendIntent.setPackage(packageName);
    int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
    sendIntent.setFlags(flags);

在Nougat设备应用程序崩溃。 但是,如果我使用下一个代码:

    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.setType("image/gif");
    String titleForChooser = getString(R.string.app_chooser_title);
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
    sendIntent.setFlags(flags);
    Intent.createChooser(sendIntent, titleForChooser);

在Nougat上它除了FB Messenger和WhatsApp之外还可以正常工作。有人知道答案"为什么?"?你能解释一下吗?

0 个答案:

没有答案