2013-11-12 3 views
4

Я пытаюсь реализовать FileProvider, чтобы разрешить мне распространять локальные, частные изображения с помощью электронной почты и других приложений. Я следую инструкциям Руководства для разработчиков Android и перехожу к тому, где мне нужно использовать функцию getUriForFile, и Eclipse говорит мне, что мне нужно создать метод. Я был под впечатлением, что это должно быть в пакете android.support.v4.content, и он находится в справочных библиотеках для приложения, но его нет.Не удается найти метод getUriForFile в FileProvider

Я добавил следующее к моему манифесту:

<provider 
android:name="android.support.v4.content.FileProvider" 
android:authorities="com.gelbintergalactic.fileprovider" 
android:exported="false" 
android:grantUriPermissions="true"> 
<meta-data 
android:name="android.support.FILE_PROVIDER_PATHS" 
android:resource="@xml/my_paths" /> 
</provider> 

Я создал этот XML-файл:

<?xml version="1.0" encoding="utf-8"?> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
<files-path name="files" path="." /> 
</paths> 

Но когда я добираюсь до этого момента в моем коде я загнан в углу:

Uri contentUri = getUriForFile(this, "com.gelbintergalactic.fileprovider", newfile); 

Какой шаг я пропустил?

+0

Когда я пытался использовать приложение с манифестом и XML путями файла на месте, но с кодом исполнения устранен, я получил следующий LogCat : 11-12 11: 57: 39.357: E/AndroidRuntime (11019): Caused by: java.lang.ClassNotFoundException: android.support.v4.content.FileProvider – GeoffSudoku

+0

Я нашел явный исходный код для FileProvider и смог его добавить к коду моего приложения и заставить его работать, но мне все же остается загадка, почему это не похоже на пакет android.support.v4.content, с которым я связан с Eclipse. – GeoffSudoku

+0

Теперь я знаю правильный способ получить текущую библиотеку android.support.v4 в свое приложение. Щелкните правой кнопкой мыши пакет, инструменты Android, добавить библиотеку поддержки ... – GeoffSudoku

ответ

10

Да, инструкции в руководстве разработчика не самые большие. getUriForFile() является статическим методом класса FileProvider так что вам нужно сделать:

Uri contentUri = 
    FileProvider.getUriForFile(this, "com.gelbintergalactic.fileprovider", newfile); 
Смежные вопросы