Реализация библиотеки APK Expansion Files?

подробное описание библиотеки тут Не поленитесь, ознакомьтесь, может не будете писать, типа, пять раз прочитал "ничё" не понял. Итак к самому вопросу:
Есть в этой библиотеке класс APEZProvider, как я понял его задача - это чтение файлов упакованных в зип архив, с чем у меня и возникли трудности. Вот моя реализация этого класса:
[assembly: Dependency(typeof(KidsApp.Droid.ZipFileContentProvider))]
namespace KidsApp.Droid
{
    [ContentProvider(new[] { ContentProviderAuthority }, Exported = false)]
    [MetaData(APEZProvider.MetaData.MainVersion, Value = "7")]
    [MetaData(APEZProvider.MetaData.PatchVersion, Value = "0")]
    public class ZipFileContentProvider : APEZProvider, IDeviceInfo
    {
        public const string ContentProviderAuthority = "kids.Kids.ZipFileContentProvider";
        public override string Authority => ContentProviderAuthority;
        public string AddAdres(string a)
        {           
            var uri = Android.Net.Uri.Parse(string.Format("content://" + ContentProviderAuthority + "/" + a));
            {
                return uri.ToString();                
            }
        }
    }
}

Кстати проект создан в Xamarin PCL профиль №111(без UWP). Все классы находятся в переносимом проекте, а вышеупомянутый класс в проекте Droid. С помощью привязки я использую в классе переносимого проекта функцию "public string AddAdres(string a)" из класса находящегося в проекте Droid. Для чего, спросите Вы?
Вот кусок кода из одного из классов переносимого проекта
public class startLayer : CCLayerColor
    {
        CCSprite DP;
        CCSprite An;
        CCSprite op;
        IDeviceInfo dev;     
        public startLayer() : base(CCColor4B.Black)
        {
            var touchListener = new CCEventListenerTouchAllAtOnce();
            touchListener.OnTouchesEnded = (touches, ccevent) => Director.PushScene(new GameScena(GameView));
            AddEventListener(touchListener, this);
            dev = DependencyService.Get<IDeviceInfo>();
        }
        protected override void AddedToScene()
        {
            base.AddedToScene();
            AddAn();
            Addop();
            AddDP();
            Schedule(RunGameLogic);
        }

        void AddDP()
        {                      
            DP = new CCSprite(dev.AddAdres("DP"));
            DP.AnchorPoint = CCPoint.AnchorMiddle;
            DP.ScaleX = App.Width / DP.TextureRectInPixels.MaxX * 0.4f;
            DP.ScaleY = App.Height / DP.TextureRectInPixels.MaxY * 0.15f;
            DP.PositionX = App.Width / 2; ;
            DP.PositionY = App.Height / 2; ;
            DP.Opacity = 0;
            AddChild(DP);
        }

Как видите "DP = new CCSprite(dev.AddAdres("DP"));" в качестве имени объекта CCSprite я использую функцию dev.AddAdres и передаю в неё имя необходимого изображения, с целью получить обратно ( return uri.ToString(); ) строку с полным путём и именем самого файла. Но почему то при реализации приложения изображения не открываются.
Что скажете по поводу этого?
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
wcoder
@wcoder
Cross-platform developer
Проверьте, получаете ли нужное значение uri из AddAdres и корректно ли оно для передачи в CCSprite
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы