Мне удалось добавить желаемый json файл во внутреннюю память моего приложения data/<packagename>/files/
. Я хочу добиться, чтобы в моем плагине android (внутри приложения Unity) была функция, которая могла бы читать те же json из внутренней памяти. Я сомневаюсь, что это возможно даже во время выполнения. Я пробовал это в своем классе String file_name=context.getFilesDir() + "/"+"stickers.json";
Contentprovider плагина, но мое приложение вылетает на устройстве.
Вторая альтернатива, которая, как я думал, заключается в передаче всего объекта json плагину Android с помощью UnitySendMessage (я никогда не использовал его раньше).
Я хочу, чтобы плагин читал внутренне сохраненное json, потому что я могу динамически изменять json во время выполнения из единицы и выполнять желаемые функции из кода android плагина.
ОБНОВЛЕНИЕ
--------- beginning of crash
2020-05-30 14:09:32.275 22270-22270/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.Addy.Trace, PID: 22270
java.lang.RuntimeException: Unable to get provider com.plugin.unityapp.StickerContentProvider: java.lang.RuntimeException: contents.json file has some issues: /data/user/0/com.Addy.Trace/files/stickers.json: open failed: ENOENT (No such file or directory)
at android.app.ActivityThread.installProvider(ActivityThread.java:7416)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844)
at android.app.ActivityThread.access$1300(ActivityThread.java:268)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7814)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
Caused by: java.lang.RuntimeException: contents.json file has some issues: /data/user/0/com.Addy.Trace/files/stickers.json: open failed: ENOENT (No such file or directory)
at com.plugin.unityapp.StickerContentProvider.readContentFile(StickerContentProvider.java:164)
at com.plugin.unityapp.StickerContentProvider.getStickerPackList(StickerContentProvider.java:182)
at com.plugin.unityapp.StickerContentProvider.onCreate(StickerContentProvider.java:98)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2113)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2087)
at android.app.ActivityThread.installProvider(ActivityThread.java:7411)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844)
at android.app.ActivityThread.access$1300(ActivityThread.java:268)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7814)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
Caused by: java.io.FileNotFoundException: /data/user/0/com.Addy.Trace/files/stickers.json: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:496)
at java.io.FileInputStream.<init>(FileInputStream.java:159)
at com.plugin.unityapp.StickerContentProvider.readContentFile(StickerContentProvider.java:156)
at com.plugin.unityapp.StickerContentProvider.getStickerPackList(StickerContentProvider.java:182)
at com.plugin.unityapp.StickerContentProvider.onCreate(StickerContentProvider.java:98)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2113)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2087)
at android.app.ActivityThread.installProvider(ActivityThread.java:7411)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844)
at android.app.ActivityThread.access$1300(ActivityThread.java:268)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7814)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
at libcore.io.Linux.open(Native Method)
at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7691)
at libcore.io.IoBridge.open(IoBridge.java:482)
at java.io.FileInputStream.<init>(FileInputStream.java:159)
at com.plugin.unityapp.StickerContentProvider.readContentFile(StickerContentProvider.java:156)
at com.plugin.unityapp.StickerContentProvider.getStickerPackList(StickerContentProvider.java:182)
at com.plugin.unityapp.StickerContentProvider.onCreate(StickerContentProvider.java:98)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2113)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2087)
at android.app.ActivityThread.installProvider(ActivityThread.java:7411)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844)
at android.app.ActivityThread.access$1300(ActivityThread.java:268)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7814)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
Это кра sh вход в LOGCAT студии android. Из единства в скрипте я использую функцию пробуждения и записываю файл json во внутреннее хранилище, но, возможно, во время запуска приложения плагин не обнаруживает json во внутреннем хранилище, используя String file_name=context.getFilesDir() + "/"+"stickers.json";
JSON Содержимое файла
{
"android_play_store_link": "",
"ios_app_store_link": "",
"sticker_packs": [
{
"identifier": "1",
"name": "Adi",
"publisher": "Jane Doe",
"tray_image_file": "Trayicon_Cat1.png",
"image_data_version":"1",
"avoid_cache":false,
"publisher_email":"",
"publisher_website": "",
"privacy_policy_website": "",
"license_agreement_website": "",
"stickers": [
{
"image_file": "Formidable.webp",
"emojis": ["☕","?"]
},
{
"image_file": "Awful.webp",
"emojis": ["?","?"]
},
{
"image_file": "Athletic.webp",
"emojis": ["☕","?"]
}
]
}
]
}