0
我想將在一個Android設備上找到的文件的路徑發送到其他Android設備,並在與上一個設備相同的相對位置重新創建該文件。在相同的相對位置跨設備重新創建文件
沒有關於品牌,型號,API級別或類似的任何保證。
我可以這樣做嗎?
基本上我想知道如果我可以使用某種類型的File.get * Path()而不做任何超級幻想。
我想將在一個Android設備上找到的文件的路徑發送到其他Android設備,並在與上一個設備相同的相對位置重新創建該文件。在相同的相對位置跨設備重新創建文件
沒有關於品牌,型號,API級別或類似的任何保證。
我可以這樣做嗎?
基本上我想知道如果我可以使用某種類型的File.get * Path()而不做任何超級幻想。
本質上,沒有辦法像調用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));
}
這通常是谷歌是如何做的是在這裏引用http://androidxref.com/4.4.2_r2/xref/frameworks/base/core/java/android/app/backup/BackupAgent.java#315
備份,可能與不同的文件結構的設備被重新創建文件時