আপনার অ্যাপ থেকে অন্য অ্যাপে একটি ফাইল সুরক্ষিতভাবে অফার করতে, আপনাকে একটি কন্টেন্ট URI আকারে ফাইলটিতে একটি সুরক্ষিত হ্যান্ডেল অফার করার জন্য আপনার অ্যাপ কনফিগার করতে হবে। অ্যান্ড্রয়েড FileProvider
কম্পোনেন্ট ফাইলের জন্য কন্টেন্ট URI তৈরি করে, আপনার XML-এ দেওয়া স্পেসিফিকেশনের ভিত্তিতে। এই পাঠটি আপনাকে দেখায় কিভাবে আপনার অ্যাপে FileProvider
এর ডিফল্ট বাস্তবায়ন যোগ করতে হয় এবং অন্যান্য অ্যাপে আপনি যে ফাইলগুলি অফার করতে চান তা কীভাবে নির্দিষ্ট করবেন।
দ্রষ্টব্য: FileProvider
ক্লাসটি AndroidX কোর লাইব্রেরির অংশ। আপনার অ্যাপ্লিকেশনে এই লাইব্রেরিটি অন্তর্ভুক্ত করার বিষয়ে তথ্যের জন্য, নির্ভরতা ঘোষণা করা দেখুন।
FileProvider উল্লেখ করুন
আপনার অ্যাপের জন্য একটি FileProvider
সংজ্ঞায়িত করার জন্য আপনার ম্যানিফেস্টে একটি এন্ট্রি প্রয়োজন৷ এই এন্ট্রি কন্টেন্ট ইউআরআই তৈরিতে ব্যবহার করার কর্তৃত্ব নির্দিষ্ট করে, সেইসাথে একটি XML ফাইলের নাম যা আপনার অ্যাপ শেয়ার করতে পারে এমন ডিরেক্টরিগুলি নির্দিষ্ট করে৷
নিম্নলিখিত স্নিপেট আপনাকে দেখায় কিভাবে আপনার ম্যানিফেস্টে <provider>
উপাদান যোগ করতে হয় যা FileProvider
ক্লাস, কর্তৃপক্ষ এবং XML ফাইলের নাম নির্দিষ্ট করে:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application ...> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.myapp.fileprovider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider> ... </application> </manifest>
এই উদাহরণে, android:authorities
অ্যাট্রিবিউটটি URI কর্তৃপক্ষকে নির্দিষ্ট করে যা আপনি FileProvider
দ্বারা তৈরি করা URI-এর জন্য ব্যবহার করতে চান। উদাহরণে, কর্তৃপক্ষ হল com.example.myapp.fileprovider
। আপনার নিজের অ্যাপের জন্য, অ্যাপের android:package
মান নিয়ে একটি কর্তৃপক্ষ উল্লেখ করুন যার সাথে "ফাইলপ্রোভাইডার" স্ট্রিং যুক্ত করা হয়েছে। কর্তৃপক্ষের মান সম্পর্কে আরও জানতে, বিষয়বস্তু URI এবং android:authorities
অ্যাট্রিবিউটের ডকুমেন্টেশন দেখুন।
<provider>
-এর <meta-data>
চাইল্ড এলিমেন্ট একটি XML ফাইলের দিকে নির্দেশ করে যা আপনি যে ডিরেক্টরিগুলি ভাগ করতে চান তা নির্দিষ্ট করে। android:resource
অ্যাট্রিবিউট হল .xml
এক্সটেনশন ছাড়াই ফাইলটির পাথ এবং নাম। এই ফাইলের বিষয়বস্তু পরবর্তী বিভাগে বর্ণনা করা হয়েছে।
শেয়ারযোগ্য ডিরেক্টরি উল্লেখ করুন
একবার আপনি আপনার অ্যাপ ম্যানিফেস্টে FileProvider
যোগ করলে, আপনি যে ফাইলগুলি শেয়ার করতে চান সেগুলি রয়েছে এমন ডিরেক্টরিগুলিকে নির্দিষ্ট করতে হবে৷ ডিরেক্টরিগুলি নির্দিষ্ট করতে, আপনার প্রকল্পের res/xml/
সাবডিরেক্টরিতে filepaths.xml
ফাইল তৈরি করে শুরু করুন। এই ফাইলে, প্রতিটি ডিরেক্টরির জন্য একটি XML উপাদান যোগ করে ডিরেক্টরিগুলি নির্দিষ্ট করুন। নিম্নলিখিত স্নিপেট আপনাকে res/xml/filepaths.xml
এর বিষয়বস্তুর একটি উদাহরণ দেখায়। স্নিপেটটি আপনার অভ্যন্তরীণ স্টোরেজ এলাকায় files/
ডিরেক্টরির একটি সাবডিরেক্টরি কীভাবে ভাগ করতে হয় তাও প্রদর্শন করে:
<paths> <files-path path="images/" name="myimages" /> </paths>
এই উদাহরণে, <files-path>
ট্যাগ আপনার অ্যাপের অভ্যন্তরীণ স্টোরেজের files/
ডিরেক্টরির মধ্যে ডিরেক্টরি শেয়ার করে। path
অ্যাট্রিবিউট ফাইলের images/
সাবডিরেক্টরি শেয়ার করে files/
। name
বৈশিষ্ট্যটি FileProvider
files/images/
সাবডিরেক্টরিতে ফাইলের জন্য কন্টেন্ট URI-তে পাথ সেগমেন্ট myimages
যোগ করতে বলে।
<paths>
উপাদানটিতে একাধিক শিশু থাকতে পারে, প্রতিটি ভাগ করার জন্য একটি আলাদা ডিরেক্টরি নির্দিষ্ট করে। <files-path>
উপাদান ছাড়াও, আপনি বাহ্যিক সঞ্চয়স্থানে ডিরেক্টরিগুলি ভাগ করতে <external-path>
উপাদান এবং আপনার অভ্যন্তরীণ ক্যাশে ডিরেক্টরিতে ডিরেক্টরিগুলি ভাগ করার জন্য <cache-path>
উপাদানটি ব্যবহার করতে পারেন। ভাগ করা ডিরেক্টরিগুলি নির্দিষ্ট করে এমন চাইল্ড উপাদান সম্পর্কে আরও জানতে, FileProvider
রেফারেন্স ডকুমেন্টেশন দেখুন।
দ্রষ্টব্য: XML ফাইলটি হল একমাত্র উপায় যা আপনি যে ডিরেক্টরিগুলি ভাগ করতে চান তা নির্দিষ্ট করতে পারেন; আপনি প্রোগ্রাম্যাটিকভাবে একটি ডিরেক্টরি যোগ করতে পারবেন না।
আপনার কাছে এখন একটি FileProvider
একটি সম্পূর্ণ স্পেসিফিকেশন রয়েছে যা আপনার অ্যাপের অভ্যন্তরীণ স্টোরেজের files/
ডিরেক্টরির ফাইলগুলির জন্য বা files/
সাব-ডিরেক্টরিতে ফাইলগুলির জন্য সামগ্রী ইউআরআই তৈরি করে। যখন আপনার অ্যাপ একটি ফাইলের জন্য একটি কন্টেন্ট URI তৈরি করে, এতে <provider>
উপাদানে ( com.example.myapp.fileprovider
), পাথ myimages/
এবং ফাইলের নাম উল্লেখ করা কর্তৃপক্ষ থাকে।
উদাহরণস্বরূপ, যদি আপনি এই পাঠের স্নিপেট অনুসারে একটি FileProvider
সংজ্ঞায়িত করেন এবং আপনি default_image.jpg
ফাইলের জন্য একটি সামগ্রী URI অনুরোধ করেন, FileProvider
নিম্নলিখিত URI প্রদান করে:
content://com.example.myapp.fileprovider/myimages/default_image.jpg
অতিরিক্ত সম্পর্কিত তথ্যের জন্য, পড়ুন: