Обработка аудиофайлов с намерением реагировать на родную - PullRequest
0 голосов
/ 03 апреля 2019

Может кто-нибудь помочь мне в получении намерения аудио файла в реагировать на родной, Я хочу, чтобы когда пользователь android делился файлом записи звонков (.amr) с моим приложением реагировать на натив, я могу получить доступ к этому файлу и сохранить его на удаленном сервере (для контроля качества),

до сих пор могу сделать мое приложение доступным для обмена аудиофайлами с добавлением приведенного ниже кода в AndroidManifest.xml

    <intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="audio/*" />
</intent-filter>

Я искал в Интернете мою проблему, есть некоторые блоги, которые обрабатывают текст / URL-адрес с помощью приведенного ниже кода в MainActivity.java

 @Override
    protected ReactActivityDelegate createReactActivityDelegate() {
        return new ReactActivityDelegate(this, getMainComponentName()) {
            @Override
            protected Bundle getLaunchOptions() {
                Intent intent = MainActivity.this.getIntent();
                Bundle bundle = new Bundle();
                bundle.putString("url", intent.getStringExtra(Intent.EXTRA_TEXT));

                return bundle;
            }
        };
    }

его рабочий файл с текстовым намерением, и я могу получить общий URL-адрес в моем initialProps

e.g {"url":"https://xxxxxx.com/abc"}

но когда я использую тот же код выше с намерением аудио / .amr, я получаю ноль e.g {"url":null},

Я полагаю, что если я получу имя файла или его полный путь в моих начальных реквизитах, тогда я смогу получить этот файл после использования Reaction-native-fs

Я новичок в Java и родной части Android, было бы здорово помочь, если бы кто-нибудь помог мне правильно выполнить вышеуказанную задачу.

Спасибо

1 Ответ

1 голос
/ 30 мая 2019

Вы должны использовать EXTRA_STREAM для аудио.Я искал то же самое, в том числе для получения других документов (PDF, DOC, аудио и т. Д.).Я не нашел никакой обертки, которая бы делала то же самое для всех форматов, которые мне нужно получить.Вы можете создать свой собственный с помощью этого для аудио или любого другого типа, который вы хотите https://www.bennettnotes.com/react-native-android-receive-data-from-share-intent/ Надеюсь, это поможет.

@Override
    protected ReactActivityDelegate createReactActivityDelegate() {
    return new ReactActivityDelegate(this, getMainComponentName()) {
        @Nullable
        @Override
        protected Bundle getLaunchOptions() {
            Intent intent = MainActivity.this.getIntent();
            String type=intent.getType();
            Bundle bundle = new Bundle();
            bundle=null;
            Toast.makeText(getApplicationContext(),
                    type.toString(),
                    Toast.LENGTH_SHORT).show();

           if(type.startsWith("text/"))
               bundle.putString("url", intent.getStringExtra(Intent.EXTRA_TEXT));
           else {
                Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
                if(uri!=null)
               { bundle.putString("url", uri.getPath());}
           }
            return bundle;
        }
    };
}
...