gpt4 book ai didi

java - 附近连接 : Why is the payload file from the Downloads folder null?

转载 作者:行者123 更新时间:2023-12-01 19:43:42 24 4
gpt4 key购买 nike

我正在关注 Nearby Connections Exchange page 上的文件传输示例(“更复杂的示例”代码 fragment )。

我可以发送图像并在另一台设备上的“下载/附近”文件夹中接收该图像。图像已成功发送,因为如果我要更改文件名以为其提供适当的扩展名(例如 .jpg),我可以在照片库应用程序中打开该图像。

        private void processFilePayload(long payloadId) {
Payload filePayload = completedFilePayloads.get(payloadId);
String filename = filePayloadFilenames.get(payloadId);
if (filePayload != null && filename != null) {
completedFilePayloads.remove(payloadId);
filePayloadFilenames.remove(payloadId);

// Retrieve received file from Downloads folder
Payload.File payloadFile2 = filePayload.asFile();
File payloadJavaFile = payloadFile2.asJavaFile();

if (payloadJavaFile == null) {
Log.d(TAG, "Payload java file is null in processFilePayload()");
} else {
payloadJavaFile.renameTo(new File(payloadJavaFile.getParentFile(), filename));
}
}
}

为什么payloadJavaFile变量为空?通过查看Payload.class,我知道asJavaFile()的结果是一个可为空的文件,并且从asJavaFile() method description ,从 onPayloadReceived() 中调用 processFilePayload() 中的 asJavaFile() (如 API 页面上的示例中所做的那样)可能会导致文件尚未收到所有有效负载的内容。但是,在验证 PayloadTransferUpdate 成功之后,我还会从 onPayloadTransferUpdate() 内部调用 processFilePayload() ,因此有效负载不应在此阶段收到其所有内容(并且在有效负载上调用 asJavaFile() 时不应为 null对象)?

我的代码与发送和接收图像和文件名的文档几乎相同。

最佳答案

如果没有为您的应用程序正确设置 READ_EXTERNAL_STORAGE 权限,Payload.asJavaFile() 将为 null。您需要在 AndroidManifest.xml 中添加 READ_EXTERNAL_STORAGE,并且还需要在运行时请求 READ_EXTERNAL_STORAGE 权限,因为这是一个危险的权限。 (https://developer.android.com/training/permissions/requesting)

要使用“附近连接”共享文件,您的应用程序需要满足以下所有条件:

AndroidManifest.xml

<!-- Required for Nearby Connections -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Optional: needed to share files -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

MainActivity.java

ActivityCompat.requestPermissions(thisActivity,
new String[]{
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_EXTERNAL_STORAGE
},
PERMISSIONS_REQUEST_CODE);

我们将改进文档,使共享文件的要求更加明显。

关于java - 附近连接 : Why is the payload file from the Downloads folder null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54376911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com