Im successful adding a desired json file to the internal storage of my app data/<packagename>/files/
.
What I want to achieve is, to make a function in my android plugin (inside Unity app) which can read the same json from internal storage. Im doubtful, if this is even possible at runtime. I tried this in my plugin contentprovider class String file_name=context.getFilesDir() + "/"+"stickers.json";
but my app crashes on device.
Second alternative which I thought is to pass the whole json object to Android plugin by using UnitySendMessage (I have never used it before).
I want the plugin to read the internally stored json because I can dynamically modify the json at runtime from unity and perform my desired functions from the android plugin code.
UPDATE
--------- 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)
This is the crash log in LOGCAT of android studio. From unity in a script , im using the awake function and writing the json file to internal storage, but maybe during the startup of the app the plugin isnt detecting the json in internal storage using String file_name=context.getFilesDir() + "/"+"stickers.json";
JSON File content
{
"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": ["☕",""]
}
]
}
]
}