Android Open File с пользовательским расширением - PullRequest
0 голосов
/ 17 мая 2019

У меня проблема в приложении Android Studio.Мое приложение должно сохранять некоторые файлы с пользовательским расширением (".ard") во внешнем хранилище.А затем откройте File Chooser и выберите файл .ard, чтобы приложение могло его открыть.

Дело в том, что когда я открываю File Chooser, я не могу найти свои .ard файлы, дажев папках они есть, я просто могу найти их с помощью Проводника файлов, но не в Средстве выбора файлов моего приложения.Еще одна вещь, которую я хочу сделать, это то, что когда кто-то щелкает файл из Android File Explorer, я открываю приложение и диалоговое окно, происходит ли событие, которое запускается при открытии файла из внешнего хранилища?.

И как я могу установить изображение для моих файлов .ard, чтобы, когда вы видите их в проводнике, файлы появлялись с этим значком?

Спасибо.

Это мой манифест Androidкод:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="sebgarcia.acardia">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".HomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>



            <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="file"/>
            <data android:mimeType="*/*"/>
            <data android:pathPattern=".*\\.ard"/>
            <!-- These additional pathPattern blocks are to allow for paths with
            additional periods in them. See:
            /2296671/pathpattern-dlya-sopostavleniya-rasshireniya-faila-ne-rabotaet-esli-v-drugom-meste-imeni-faila-suschestvuet-tochka -->
            <data android:pathPattern=".*\\..*\\.ard"/>
            <data android:pathPattern=".*\\..*\\..*\\.ard"/>
            <data android:pathPattern=".*\\..*\\..*\\..*\\.ard"/>
            <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ard"/>
            <data android:host="*"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="file"/>
            <data android:pathPattern=".*\\.ard"/>

            <data android:host="*"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:mimeType="application/vnd.ni.custom"
                android:scheme="file"/>
            <data android:host="*"/>
            <data android:pathPattern=".*\\.ard" />
    </intent-filter>

</application>

</manifest>

Это мой код диалога (вызывается из активности)

private void StartSearch()
    {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("text/ard");
        intent.addCategory(Intent.CATEGORY_OPENABLE);

        try
        {
            startActivityForResult(
                    Intent.createChooser(intent, "Select a file to import"), Code
            );
        }
        catch (android.content.ActivityNotFoundException ex)
        {
            //Doesnt have a File Manager
            Toast.makeText(getContext(), "Please, Install a File Manager", Toast.LENGTH_SHORT).show();
        }
    }


 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        int Code = 43;

        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Code && resultCode == Activity.RESULT_OK) {
            if (data != null) {
                Uri uri = data.getData();
                Toast.makeText(this, "Opened File", Toast.LENGTH_SHORT).show();
            }

        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...