Откройте аудиофайл ... ("audio / wav") с помощью намерения

Я пытался открыть файл с помощью намерения и FileProvider, но приложение вылетает, когда я пытаюсь открыть файл ... Вот что я делаю ... пожалуйста, помогите мне ..

@Override
public void onClick(View view){
final Uri uri = FileProvider.getUriForFile(mCtx, String.valueOf(R.string.file_provider_authority), new File(mydata.get(getAdapterPosition()).getPath()));
    mCtx.grantUriPermission(mCtx.getPackageName() , uri , Intent.FLAG_GRANT_READ_URI_PERMISSION);

    try {
        final Intent intent = new Intent(Intent.ACTION_VIEW)
                .setDataAndType(uri, "audio/wav")
                .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Intent choose = Intent.createChooser(intent, "See..");
        mCtx.startActivity(choose);
        Toast.makeText(mCtx, "Clicked " + mydata.get(getAdapterPosition()).getPath(), Toast.LENGTH_SHORT).show();
    }

    catch (
            ActivityNotFoundException e
            ){

    }


   }

}

I got following exception --------- beginning of crash

2018-12-18 09: 13: 40.173 25265-25265 / my.uapp.com E / Android Время выполнения: FATAL EXCEPTION: main Процесс: my.uapp.com, PID: 25265 java.lang.NullPointerException: попытка вызвать виртуальный метод android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData (android.content.pm.PackageManager, java.lang.String) для ссылки на нулевой объект в android.support.v4.content.FileProvider.parsePathStrategy (FileProvider.java:605) в android.support.v4.content.FileProvider.getPathStrategy (FileProvider.java:579) в android.support.v4.content.FileProvider.getUriForFile (FileProvider.java:417) на my.uapp.com.MyAdapter $ ViewHolder.onClick (MyAdapter.java:73) в android.view.View.performClick (View.java:6320) в android.view.View $ PerformClick.run (View.java:25087) в android.os.Handler.handleCallback (Handler.java:869) в android.os.Handler.dispatchMessage (Handler.java:101) в android.os.Looper.loop (Looper.java:206) в android.app.ActivityThread.main (ActivityThread.java:6749) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:845)

Посмотрите на трассировка стека, чтобы определить причину сбоя.

Mike M. 18.12.2018 04:30

Спасибо за предложение ... вот что у меня в стеке

Amanth Rai 18.12.2018 04:49

Это исключение предполагает, что полномочия, которые вы передаете в вызове FileProvider.getUriForFile(), не соответствуют тому, что вы указали в элементе <provider> в своем манифесте. Они должны точно совпадать.

Mike M. 18.12.2018 04:55

Спасибо за ответ ... так что провайдер должен быть таким же, как в декларации манифеста ... ☺

Amanth Rai 18.12.2018 04:58

Да, String, который вы передаете в качестве второго аргумента в FileProvider.getUriForFile(), должен точно соответствовать тому, что у вас есть для атрибута authorities на <provider> в вашем манифесте. Сравните имеющееся у вас значение со строкой ресурса file_provider_authority.

Mike M. 18.12.2018 05:01

Спасибо .... Майк М. Я отредактировал свой код ... И вот он теперь работает ... СПАСИБО, ты классный ... ☺️

Amanth Rai 18.12.2018 05:02

Ура ... Большое вам спасибо ..

Amanth Rai 18.12.2018 05:05
0
7
95
0

Другие вопросы по теме