Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
okunetsky
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 29
#1

File provider IllegalArgumentException - Android

26.08.2016, 23:18. Просмотров 193. Ответов 0
Метки нет (Все метки)

Сейчас изучаю материалы тут.
Вот мой класс выбора файла

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public class FileSelectActivity extends AppCompatActivity {
 
    private ListView listView;
 
    // The path to the root of this app's internal storage
    private File mPrivateRootDir;
    // The path to the "images" subdirectory
    private File mBooksDir;
    // Array of files in the images subdirectory
    File[] mBookFiles;
    // Array of filenames corresponding to mBookFiles
    String[] mBookFilenames;
    // Initialize the Activity
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_file_select);
        listView= (ListView) findViewById(R.id.listView2);
 
 
 
 
        // Set up an Intent to send back to apps that request a file
        Intent mResult  =
                new Intent("com.example.myapp.ACTION_RETURN_FILE");
        // Get the files/ subdirectory of internal storage
        mPrivateRootDir = getFilesDir();
        // Get the files/images subdirectory;
        mBooksDir = new File(mPrivateRootDir, "/Books");
        // Get the files in the images subdirectory
        mBookFiles = mBooksDir.listFiles();
        // Set the Activity's result to null to begin with
        setResult(AppCompatActivity.RESULT_CANCELED, null);
        mBookFilenames=new String[mBookFiles.length];
        for (int i = 0; i < mBookFiles.length; i++) {
            mBookFilenames[i]=mBookFiles[i].getAbsolutePath();
        }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        ArrayAdapter<String> adapter=new ArrayAdapter<>(this,R.layout.item,R.id.textView2,mBookFilenames);
        listView.setAdapter(adapter);
 
 
 
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
 
                File requestFile=new File(mBookFilenames[i]);
 
//                Uri fileURI = FileProvider.getUriForFile(getApplicationContext(),
//                        "app.com.example.oleg.sharingfiles.fileprovider",
//                        requestFile);
                Log.d("oleh", String.valueOf(requestFile.getAbsolutePath()));
 
            }
        });
 
 
    }
}
Вот манифест с файлпровайдером
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="app.com.example.oleg.sharingfiles">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="app.com.example.oleg.sharingfiles.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
        </provider>
 
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".FileSelectActivity"></activity>
    </application>
 
</manifest>
А вот файл с доступными для просмотра папками
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <files-path path="Books/" name="mybooks" />
</paths>
В итоге ошибка

6 16:10:26.851 12044-12044/app.com.example.oleg.sharingfiles E/AndroidRuntime: FATAL EXCEPTION: main
Process: app.com.example.oleg.sharingfiles, PID: 12044
java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/app.com.example.oleg.sharingfiles/files/Books/Pride and prejudice
at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:711)
at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
at app.com.example.oleg.sharingfiles.FileSelectActivity$1$override.onItemClick(FileSelectActivity.java:82)
at app.com.example.oleg.sharingfiles.FileSelectActivity$1$override.access$dispatch(FileSelectActivity.java)
at app.com.example.oleg.sharingfiles.FileSelectActivity$1.onItemClick(FileSelectActivity.java:0)
at android.widget.AdapterView.performItemClick(AdapterView.java:300)
at android.widget.AbsListView.performItemClick(AbsListView.java:1143)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044)
at android.widget.AbsListView$3.run(AbsListView.java:3833)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2016, 23:18     File provider IllegalArgumentException
Посмотрите здесь:

Как получить данные контакта из Contact Provider Android
Open file dialog Android
Android File Explorer в Eclipse (сохранить файл)
Android Ini file
Чтение строк из file.txt Android
Android Файл расширения (Expansion File)
Android Ошибка "Error opening trace file: No such file or directory (2)"
Error opening trace file no such file or directory (2) Android
Download file from Google Drive Android
Не находит expansion file Android
Android Передача данных между двумя телефонами Android + Content Provider
Android Ошибка инициализации List<File>

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru