2016-03-06 59 views
0

我想從Java的內置文件管理器傳遞一個路徑到Java與Linux上的Java程序安裝在Android設備上安裝apk。當代碼執行時,使用文件管理器選擇的apk永遠不會被安裝。在Linux上通過ADB與Java程序在Android設備上安裝apk

下面是代碼:

JFileChooser chooser = new JFileChooser(); 
      FileNameExtensionFilter filter = new FileNameExtensionFilter(
        "APK Files", "apk"); 
      chooser.setFileFilter(filter); 
      int returnVal = chooser.showOpenDialog(getParent()); 
      if(returnVal == JFileChooser.APPROVE_OPTION) { 
       System.out.println("You choose to open this file: " + chooser.getSelectedFile().getName()); 
       File file = new File(""); 
       System.out.println(file.getAbsolutePath().toString()); 

       try { 
        Process p1 = Runtime.getRuntime().exec("adb kill-server"); //for killing old adb instance 
        Process p2 = Runtime.getRuntime().exec("adb start-server"); 
        Process p3 = Runtime.getRuntime().exec("adb install \"" + file.getAbsolutePath() + "\""); 
        p3.waitFor(); 
        Process p4 = Runtime.getRuntime().exec("adb kill-server"); 
       } catch (Exception e1) { 

        System.err.println(e1); 
       } 

下面的代碼應該安裝APK:

Process p3 = Runtime.getRuntime().exec("adb install \"" + file.getAbsolutePath() + "\""); 
+1

你不應該使用'文件文件= chooser.getSelectedFile()' – ritesht93

+0

你有一個空文件...'文件文件=新文件(「」);'爲什麼你不使用文件選擇器中的那個? –

+0

它還沒有工作@ ritesht93 –

回答

0

我想通了我自己,這裏是代碼:

JFileChooser chooser = new JFileChooser(); 
      FileNameExtensionFilter filter = new FileNameExtensionFilter("APK Files", "apk"); 
      chooser.setFileFilter(filter); 
      int returnVal = chooser.showOpenDialog(getParent()); 
      if (returnVal == JFileChooser.APPROVE_OPTION) { 
       File file = chooser.getSelectedFile(); 
       String filename = chooser.getSelectedFile().getName(); 
       try { 
        String[] commands = new String[3]; 
        commands[0] = "adb"; 
        commands[1] = "install"; 
        commands[2] = file.getAbsolutePath(); 
        Process p1 = Runtime.getRuntime().exec(commands, null); 
        p1.waitFor(); 
             } catch (Exception e1) { 
        System.err.println(e1); 
       } 
      } 
1

更改的行

File file = new File(""); 

File file = chooser.getSelectedFile(); 

也不要忘記檢查

if(file.exists()) { 

驗證文件。

希望它能工作。

+0

我試過了,但它不工作,還有什麼建議嗎? –

+0

確保您的設備具有開發人員選項.. – ELITE