2015-11-02 1 views
0

Я делаю приложение для звукового сопровождения, и мне нужно разделить звук1, когда кнопка1 долго нажата. Я могу сделать ком меню доли с этим кодом:Сохранить файл в папку во внешнем хранилище и поделиться

Button button1; 


    button1 = (Button) v.findViewById(R.id.button1); 
    button1.setLongClickable(true); 

    button1.setOnLongClickListener(new View.OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View arg0) { 

      Intent shareIntent = new Intent(Intent.ACTION_SEND); 
      shareIntent.setType("audio/ogg"); 

      Uri.parse("android.resource://test.testapp/" + R.raw.sound1); 
      shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://test.testapp/" + R.raw.sound1)); 
      startActivity(Intent.createChooser(shareIntent, "Share Sound")); 

      return true; 
     } 

    }); 


    return v; 
} 

я могу поделиться аудиофайлом отлично с WhatsApp и Google Drive, но другие приложения не работают. Я прочитал, что вам нужно скопировать файлы во внешнее хранилище и поделиться им оттуда. Я искал почти два дня, но я не могу найти способ сделать это. Другие статьи на Stack мне тоже не помогают:/

Как создать каталог во внешнем хранилище, скопировать файл (sound1.ogg) из папки/raw в эту папку, а затем поделиться этим звуком с другое приложение (Gmail, Google Диск, Whatsapp, Skype и т. д.)?

+0

Вы видите это сообщение? http://stackoverflow.com/questions/17794974/create-folder-in-android – Mario

ответ

0

Сохранение чего-то внешнего хранилища довольно просто. Во-первых вам нужно добавить это в ваш файл манифеста, чтобы внешняя письменность хранения:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Затем в деятельности/фрагменте:

String root = Environment.getExternalStorageDirectory().toString(); 
File myDir = new File(root + "/saved_images"); 
myDir.mkdirs(); 
File file = new File (myDir, "FILE_NAME"); 
... however you write the file through output stream .... 

Так как эти аудио файлов, вы должны хранить их в публичная аудио-библиотека в каждом телефоне Android. Вы можете получить доступ к нему, как это:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) 

Я хотел бы предложить, глядя через this article для получения дополнительной информации!

+0

Просто добавьте ответ: сохранение этих аудиофайлов в общедоступной папке аудио позволяет ЛЮБОЙ программе иметь доступ к ней! Поэтому, если приложение позволяет размещать или загружать аудиофайлы любого типа, они смогут получить к ним доступ, как только вы сохраните их в этой папке. – Shrey

+0

Я не думаю, что они должны храниться в музыкальной папке, так как они действительно короткие звуки (1-6 секунд) – Spickle