با درود خدمت دوستان عزیز
😤 از وقتی که TargetSDK رو روی بالای ۲۶ میذارید در اندروید ۸ با خطای مشابه زیر برخورد میکنید و از دست قضیه FileProvider خسته شدید؟!
android.os.FileUriExposedException: file:///... exposed beyond app through ClipData.Item.getUri() at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
✅ مشکلی نیست،
کافیه کد زیر رو توی سرویس Starter یا اکتیویتی تون قرار بدید؛
اینجوری دیگه به FileProvider نیازی نیست و بازهم میتونید از روش های قدیمی “اشتراک گذاری اپ و فایل و اینتنت های دیگه” استفاده کنید:
#if java import android.os.StrictMode; public void _onCreate() { //@yahoo98 StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); //yahoo98.ir builder.detectFileUriExposure(); } #End If 'کد فقط یکجا گذاشته بشه و یکبار اجرا بشه کافیه
❌ این کد از API 18 (یعنی اندروید ۴٫۳) به بالا پشتیبانی میشه. بنابراین در صورت استفاده از این کد باید MinSDK در منیفست تون رو روی ۱۸ بذارید تا برنامه روی اندروید پایین تر از ۱۸ نصب نشه.
⚠️ با اینکار درواقع به برنامه خودمون اعلام میکنیم که بحث های امنیتی ای که از اندروید ۸ به بالا برای این موارد در نظر گرفته شده رو نادیده بگیره و همچنان از روش های قدیمی استفاده کنه.