接收共享文件

Receiving a shared file

在这种情况下,我无法通过 whats'app 接收 .txt 文件。
我在 activity:

中得到了意图
//check intent
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();

控制它是否是一个ACTION_SEND,通过一个Bundle提取extra,创建一个新的File并尝试将其转换成一个String :

if (Intent.ACTION_SEND.equals(action) && Objects.equals (type, "text/plain")) {
    Log.d ("Intent", "have shared");
    Bundle bundle = intent.getExtras ();
    Uri uri = (Uri) bundle.get(Intent.EXTRA_STREAM);
    Log.d ("uri ",
    uri.getAuthority ()+" "+
    uri.getPath ()+" "+
    uri.getFragment ()+" "+
    uri.getUserInfo ());
    File file = new File (uri.getPath ());
    Log.d("file" , file.toString ()+" "+file.getPath ()+" "+file.getName ()+" "+ file.exists ()+" "+ file.isFile ()+" "+file.isDirectory ()+" "+file.isAbsolute ()+" "+file.isHidden ());
    try {
        StringBuilder text = new StringBuilder();
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        //read line by line
        while ((line = br.readLine()) != null) {
             text.append(line);
             text.append('\n');
        }
        Log.d ("String", text.toString ());
        } catch (java.io.IOException e) {
              e.printStackTrace ();
        }

调试日志的结果是:

D/uri: com.whatsapp.provider.media /item/95 null null
D/file: /item/95 /item/95 95 false false false true false

我在 BufferedReader 上收到此错误:

W/System.err: java.io.FileNotFoundException: /item/95: open failed: ENOENT (No such file or directory)

我不明白为什么。
有人可以帮我吗?

您没有获得文件路径。您将获得 UriUri 不是文件,您的 Uri 具体有一个 content 方案,而不是 file 方案。

删除 File file = new File (uri.getPath ());。将 new FileReader(file) 替换为 new InputStreamReader(getContentResolver().openInputStream(uri)),以处理 contentfile 方案。