2015-04-01 54 views
0

我想將在一個Android設備上找到的文件的路徑發送到其他Android設備,並在與上一個設備相同的相對位置重新創建該文件。在相同的相對位置跨設備重新創建文件

沒有關於品牌,型號,API級別或類似的任何保證。

我可以這樣做嗎?

基本上我想知道如果我可以使用某種類型的File.get * Path()而不做任何超級幻想。

回答

0

本質上,沒有辦法像調用File.java中的get * Path()函數一樣簡單地完成此操作,但這裏有一個可以完成的通用算法。

通用算法:

  1. 確定哪些已知的根下的文件上設備A.
  2. 存在發送已知的根名稱和規範文件路徑到裝置B
  3. 在設備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

備份,可能與不同的文件結構的設備被重新創建文件時
相關問題