我想将在一台Android设备上找到的文件的路径发送到其他Android设备,并在与之前设备相同的相对位置重新创建该文件。
没有关于品牌,型号,API级别或类似产品的任何保证。
我可以这样做吗?
基本上我想知道我是否可以使用某种类型的File.get * Path()而不做任何超级花哨的事情。
答案 0 :(得分:0)
基本上,没有办法像调用File.java中的get * Path()函数一样完成此操作,但这里有一个可以做的通用算法。
一般算法:
在设备B上,使用相对于已知根的路径创建文件。
//assume these constants are accessible on device A and B
public static String FILES_DIR = "f";
public static String EXTERNAL_FILES_DIR = "e";
//Device A:
File f = new File(getFilesDir(), "test.txt");
String canonicalPath = f.getCanonicalPath();
Packet p = new Packe(FILES_DIR, canonicalPath);
sendPacket(p, DEVICE_B);
//Device B:
Packet p = receivePacket();
String token = p.getToken();
String canonicalPath = p.getCanonicalPath();
if (token.equals(FILES_DIR)) {
File f = new File(getFilesDir(), relativizeToRoot(FILES_DIR, canonicalPath));
writeFile(f);
} else if (token.equals(EXTERNAL_DIR)) {
File f = new File(getExternalFilesDir(), relativizeToRoot(EXTERNAL_FILES_DIR, canonicalPath));
}
这通常是Google在备份可能在具有不同文件结构的设备上重新创建的文件时的做法http://androidxref.com/4.4.2_r2/xref/frameworks/base/core/java/android/app/backup/BackupAgent.java#315