Guest User

Untitled

a guest
Jan 9th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. public class MainActivity extends AppCompatActivity {
  2.  
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7.  
  8. new AsyncTest().execute("https://yt-dl.org/downloads/latest/youtube-dl");
  9.  
  10. }
  11.  
  12. void exec(String cmd, String directory){
  13. Log.d("test-ytdl",cmd);
  14. try {
  15. Process process = Runtime.getRuntime().exec(cmd,null, new File(directory) );
  16. try (InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream())) {
  17. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  18. for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
  19. Log.d("test-ytdl","=> "+line);
  20. }
  21. }
  22. } catch (IOException e) {
  23. e.printStackTrace();
  24. Log.d("test-ytdl", " Error : "+e.getMessage());
  25. }
  26. }
  27.  
  28. void downloadFile(String url, String filename) {
  29. // need android.permission.INTERNET
  30. try {
  31. URL u = new URL(url);
  32. URLConnection conn = u.openConnection();
  33. int contentLength = conn.getContentLength();
  34. DataInputStream stream = new DataInputStream(u.openStream());
  35. byte[] buffer = new byte[contentLength];
  36. stream.readFully(buffer);
  37. stream.close();
  38. FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
  39. fos.write(buffer);
  40. fos.flush();
  41. fos.close();
  42. } catch (IOException e) {
  43. e.printStackTrace();
  44. }
  45. }
  46.  
  47. private class AsyncTest extends AsyncTask<String, Void, Void> {
  48.  
  49. @Override
  50. protected Void doInBackground(String... args) {
  51.  
  52. File file = getFileStreamPath("youtube_dl");
  53.  
  54. if(!file.exists())
  55. downloadFile(args[0], "youtube_dl");
  56.  
  57. file.setExecutable(true, true);
  58.  
  59. Log.d("test-ytdl", "# Current folder : " + file.getParent());
  60. exec("chmod 777 youtube_dl", file.getParent());
  61. exec("stat youtube_dl", file.getParent());
  62. exec("whoami", file.getParent());
  63. exec("youtube_dl", file.getParent());
  64.  
  65. return null;
  66. }
  67. }
  68. }
  69.  
  70. 01-09 20:33:49.434 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: # Current folder : /data/user/0/fr.klemek.testyoutubedl/files
  71. 01-09 20:33:49.434 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: chmod 777 youtube_dl
  72. 01-09 20:33:49.556 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: stat youtube_dl
  73. 01-09 20:33:49.637 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => File: `youtube_dl'
  74. 01-09 20:33:49.637 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => Size: 1614357 Blocks: 3160 IO Blocks: 4096 regular file
  75. 01-09 20:33:49.637 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => Device: 1030fh/66319d Inode: 148472 Links: 1
  76. 01-09 20:33:49.640 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => Access: (777/-rwxrwxrwx) Uid: (10022/ u0_a22) Gid: (10022/ u0_a22)
  77. 01-09 20:33:49.640 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => Access: 2018-01-09 20:33:49.420537211
  78. 01-09 20:33:49.640 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => Modify: 2018-01-09 20:33:49.420537211
  79. 01-09 20:33:49.640 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => Change: 2018-01-09 20:33:49.550537211
  80. 01-09 20:33:49.641 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: whoami
  81. 01-09 20:33:49.708 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: => u0_a22
  82. 01-09 20:33:49.708 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: youtube_dl
  83. 01-09 20:33:49.715 9927-9971/fr.klemek.testyoutubedl D/test-ytdl: Error : Cannot run program "youtube_dl" (in directory "/data/user/0/fr.klemek.testyoutubedl/files"): error=13, Permission denied
Add Comment
Please, Sign In to add comment