Как просмотреть изображение с галереей по умолчанию в Android 8.0? - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел просмотреть мое недавно загруженное изображение в приложении галереи по умолчанию на моем Android 8.0 [Oreo] .

Я использовал для этого намерение, но оно показывает уведомление как " Носитель не найден ".

После поиска по битам я обнаружил, что для " Android N и выше " нам нужно использовать "FileProvider" , но я не нашел хорошего объяснениянапишите об этом, поэтому, пожалуйста, помогите мне в этом .....

Пожалуйста, помогите мне, используя намерение или поставщика файлов:

Мой код выглядит следующим образом:

String root = Environment.getExternalStorageDirectory().toString();

public void onClick(DialogInterface dialog, int id)
{
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.parse(root + "/h_jokes_images/"+fname+".jpg"), "image/mime");
    startActivity(intent);
}

1 Ответ

0 голосов
/ 14 ноября 2018

, если ваше приложение предназначено для Android N (7.0) и выше, вы должны использовать ContentProvider.

Intent intent = new Intent(Intent.ACTION_VIEW)//
                                    .setDataAndType(VERSION.SDK_INT >= VERSION_CODES.N ?
                                                    android.support.v4.content.FileProvider.getUriForFile(this,getPackageName() + ".provider", file) : Uri.fromFile(file),
                            "image/*").addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

манифест:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"/>
</provider>

res / xml / provider_paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <!--<external-path name="external_files" path="."/>-->
    <external-path
        name="files_root"
        path="Android/data/${applicationId}"/>
    <external-path
        name="external_storage_root"
        path="."/>
</paths>
...