<প্রদানকারী>

বাক্য গঠন:
<provider android:authorities="list"
          android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string" >
    ...
</provider>
মধ্যে:
<application>
থাকতে পারে:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
বর্ণনা:
একটি বিষয়বস্তু প্রদানকারী উপাদান ঘোষণা. একটি বিষয়বস্তু প্রদানকারী হল ContentProvider একটি উপশ্রেণী যা অ্যাপ্লিকেশন দ্বারা পরিচালিত ডেটাতে কাঠামোগত অ্যাক্সেস সরবরাহ করে। আপনার অ্যাপ্লিকেশানের সমস্ত সামগ্রী প্রদানকারীকে ম্যানিফেস্ট ফাইলের একটি <provider> উপাদানে সংজ্ঞায়িত করতে হবে। অন্যথায়, সিস্টেমটি তাদের সম্পর্কে অবগত নয় এবং সেগুলি চালায় না।

শুধুমাত্র কন্টেন্ট প্রদানকারীদের ঘোষণা করুন যেগুলি আপনার আবেদনের অংশ। আপনি আপনার অ্যাপ্লিকেশনে ব্যবহার করেন এমন অন্যান্য অ্যাপ্লিকেশনগুলিতে সামগ্রী প্রদানকারীকে ঘোষণা করবেন না৷

অ্যান্ড্রয়েড সিস্টেম একটি অথরিটি স্ট্রিং অনুযায়ী বিষয়বস্তু প্রদানকারীদের রেফারেন্স সংরক্ষণ করে, প্রদানকারীর সামগ্রী URI- এর অংশ। উদাহরণস্বরূপ, ধরুন আপনি একটি বিষয়বস্তু প্রদানকারীকে অ্যাক্সেস করতে চান যা স্বাস্থ্যসেবা পেশাদারদের সম্পর্কে তথ্য সঞ্চয় করে। এটি করার জন্য, আপনি ContentResolver.query() পদ্ধতিটিকে কল করুন, যা একটি URI নেয় যা প্রদানকারীকে সনাক্ত করে, অন্যান্য যুক্তিগুলির মধ্যে:

content://com.example.project.healthcareprovider/nurses/rn

content: স্কিম URI-কে একটি সামগ্রী URI হিসাবে চিহ্নিত করে যা একটি Android সামগ্রী প্রদানকারীকে নির্দেশ করে৷ কর্তৃপক্ষ com.example.project.healthcareprovider প্রদানকারীকে নিজেই সনাক্ত করে। অ্যান্ড্রয়েড সিস্টেম তার পরিচিত প্রদানকারী এবং তাদের কর্তৃপক্ষের তালিকায় কর্তৃপক্ষের সন্ধান করে। সাবস্ট্রিং nurses/rn হল একটি পথ , যা সামগ্রী প্রদানকারী প্রদানকারীর ডেটার উপসেটগুলি সনাক্ত করতে ব্যবহার করে৷

আপনি যখন আপনার প্রদানকারীকে <provider> উপাদানে সংজ্ঞায়িত করেন, তখন আপনি android:name আর্গুমেন্টে স্কিম বা পথটি অন্তর্ভুক্ত করেন না, শুধুমাত্র কর্তৃপক্ষ।

বিষয়বস্তু সরবরাহকারীদের ব্যবহার এবং বিকাশ সম্পর্কে তথ্যের জন্য, সামগ্রী সরবরাহকারী দেখুন৷

গুণাবলী:
android:authorities
এক বা একাধিক URI কর্তৃপক্ষের একটি তালিকা যা সামগ্রী প্রদানকারীর দ্বারা অফার করা ডেটা সনাক্ত করে। একাধিক কর্তৃপক্ষের নাম সেমিকোলন দিয়ে আলাদা করে তালিকাভুক্ত করুন। দ্বন্দ্ব এড়াতে, কর্তৃপক্ষের নামের জন্য একটি জাভা-শৈলীর নামকরণ কনভেনশন ব্যবহার করুন, যেমন com.example.provider.cartoonprovider । সাধারণত, এটি ContentProvider সাবক্লাসের নাম যা প্রদানকারীকে প্রয়োগ করে

কোন ডিফল্ট নেই. অন্তত একটি কর্তৃপক্ষ নির্দিষ্ট করা আবশ্যক.

android:enabled
বিষয়বস্তু প্রদানকারী সিস্টেম দ্বারা তাত্ক্ষণিক করা যাবে কিনা. এটা হতে পারে "true" এবং না হলে "false" । প্রচলিত মূল্য "true"

<application> উপাদানটির নিজস্ব enabled বৈশিষ্ট্য রয়েছে যা সামগ্রী প্রদানকারী সহ সমস্ত অ্যাপ্লিকেশন উপাদানগুলিতে প্রযোজ্য। <application> এবং <provider> বৈশিষ্ট্য উভয়কেই "true" হতে হবে, কারণ উভয়ই ডিফল্টরূপে, বিষয়বস্তু প্রদানকারীকে সক্ষম করার জন্য। যদি উভয়টি "false" হয়, প্রদানকারী অক্ষম করা হয়৷ এটা ইনস্ট্যান্ট করা যাবে না.

android:directBootAware

বিষয়বস্তু প্রদানকারী ডাইরেক্ট-বুট সচেতন কিনা—অর্থাৎ, ব্যবহারকারী ডিভাইসটি আনলক করার আগে এটি চলতে পারে কিনা।

দ্রষ্টব্য: ডাইরেক্ট বুট চলাকালীন, আপনার অ্যাপ্লিকেশনের একটি বিষয়বস্তু প্রদানকারী শুধুমাত্র ডিভাইস সুরক্ষিত স্টোরেজে সংরক্ষিত ডেটা অ্যাক্সেস করতে পারে।

ডিফল্ট মান "false"

android:exported
অন্যান্য অ্যাপ্লিকেশন ব্যবহারের জন্য সামগ্রী প্রদানকারী উপলব্ধ কিনা।
  • "true" : প্রদানকারী অন্যান্য অ্যাপ্লিকেশনের জন্য উপলব্ধ। যে কোনো অ্যাপ্লিকেশন প্রদানকারীর জন্য নির্দিষ্ট অনুমতি সাপেক্ষে, এটি অ্যাক্সেস করতে প্রদানকারীর বিষয়বস্তু URI ব্যবহার করতে পারে।
  • "false" : প্রদানকারী অন্যান্য অ্যাপ্লিকেশনের জন্য উপলব্ধ নয়৷ আপনার অ্যাপ্লিকেশনগুলিতে প্রদানকারীর অ্যাক্সেস সীমিত করতে android:exported="false" সেট করুন৷ শুধুমাত্র যে অ্যাপ্লিকেশনগুলির প্রদানকারী হিসাবে একই ব্যবহারকারীর আইডি (UID) আছে, অথবা যে অ্যাপ্লিকেশনগুলিকে android:grantUriPermissions এলিমেন্টের মাধ্যমে অস্থায়ীভাবে প্রদানকারীকে অ্যাক্সেস দেওয়া হয়েছে, তাদের এটিতে অ্যাক্সেস রয়েছে৷

যেহেতু এই অ্যাট্রিবিউটটি API লেভেল 17-এ প্রবর্তন করা হয়েছিল, তাই API লেভেল 16 এবং এর নিচের সমস্ত ডিভাইসগুলি এমনভাবে আচরণ করে যেন এই অ্যাট্রিবিউটটি "true" সেট করা আছে। আপনি যদি android:targetSdkVersion 17 বা উচ্চতর সেট করেন, তাহলে API স্তর 17 বা উচ্চতর চলমান ডিভাইসগুলির জন্য ডিফল্ট মান "false" হবে৷

আপনি android:exported="false" সেট করতে পারেন এবং এখনও permission বৈশিষ্ট্য সহ অনুমতি সেট করে আপনার প্রদানকারীর অ্যাক্সেস সীমিত করতে পারেন৷

android:grantUriPermissions
যাদের সাধারণত সামগ্রী প্রদানকারীর ডেটা অ্যাক্সেস করার অনুমতি নেই তাদের এটি করার অনুমতি দেওয়া যেতে পারে, সাময়িকভাবে readPermission , writePermission , permission , এবং exported attributes দ্বারা আরোপিত সীমাবদ্ধতা অতিক্রম করে৷

এটি "true" যদি অনুমতি দেওয়া যায়, এবং না হলে "false" । যদি "true" , তাহলে যে কোনো বিষয়বস্তু প্রদানকারীর ডেটার অনুমতি দেওয়া যেতে পারে। যদি "false" , তাহলে অনুমতি দেওয়া যেতে পারে শুধুমাত্র <grant-uri-permission> সাব-এলিমেন্টে তালিকাভুক্ত ডেটা সাবসেটগুলিতে, যদি থাকে। ডিফল্ট মান "false"

অনুমতি দেওয়া হল একটি অ্যাপ্লিকেশন উপাদানকে অনুমতি দ্বারা সুরক্ষিত ডেটাতে এককালীন অ্যাক্সেস দেওয়ার একটি উপায়। উদাহরণস্বরূপ, যখন একটি ইমেল বার্তায় একটি সংযুক্তি থাকে, তখন মেল অ্যাপ্লিকেশন উপযুক্ত দর্শককে এটি খুলতে কল করতে পারে, যদিও দর্শকের কাছে সমস্ত সামগ্রী প্রদানকারীর ডেটা দেখার সাধারণ অনুমতি নেই৷

এই ধরনের ক্ষেত্রে, Intent অবজেক্টে FLAG_GRANT_READ_URI_PERMISSION এবং FLAG_GRANT_WRITE_URI_PERMISSION ফ্ল্যাগ দ্বারা অনুমতি দেওয়া হয় যা উপাদানটিকে সক্রিয় করে। উদাহরণস্বরূপ, মেল অ্যাপ্লিকেশনটি Context.startActivity() এ পাস করা Intent FLAG_GRANT_READ_URI_PERMISSION রাখতে পারে। অনুমতিটি Intent URI-এর জন্য নির্দিষ্ট।

আপনি যদি এই বৈশিষ্ট্যটিকে "true" তে সেট করে বা <grant-uri-permission> সাব-এলিমেন্টগুলিকে সংজ্ঞায়িত করে এই বৈশিষ্ট্যটি সক্ষম করেন, প্রদানকারীর কাছ থেকে একটি আচ্ছাদিত URI মুছে ফেলা হলে Context.revokeUriPermission() কল করুন৷

<grant-uri-permission> উপাদানটিও দেখুন।

android:icon
বিষয়বস্তু প্রদানকারীর প্রতিনিধিত্বকারী একটি আইকন। এই বৈশিষ্ট্যটি চিত্র সংজ্ঞা ধারণকারী একটি অঙ্কনযোগ্য সম্পদের একটি রেফারেন্স হিসাবে সেট করা হয়েছে। যদি এটি সেট করা না থাকে, তবে সম্পূর্ণরূপে অ্যাপ্লিকেশনটির জন্য নির্দিষ্ট আইকনটি পরিবর্তে ব্যবহার করা হয়৷ আরও তথ্যের জন্য, <application> উপাদানের icon বৈশিষ্ট্য দেখুন।
android:initOrder
যে ক্রমে বিষয়বস্তু প্রদানকারীকে ইনস্ট্যান্ট করা হয়, একই প্রক্রিয়ার দ্বারা হোস্ট করা অন্যান্য সামগ্রী প্রদানকারীর সাথে সম্পর্কিত। যখন বিষয়বস্তু প্রদানকারীদের মধ্যে নির্ভরতা থাকে, তাদের প্রত্যেকের জন্য এই বৈশিষ্ট্যটি সেট করা নিশ্চিত করে যে সেগুলি সেই নির্ভরতাগুলির দ্বারা প্রয়োজনীয় ক্রমে তৈরি করা হয়েছে। মান হল একটি পূর্ণসংখ্যা, যেখানে উচ্চতর সংখ্যাগুলি প্রথমে শুরু করা হচ্ছে৷
android:label
প্রদত্ত সামগ্রীর জন্য একটি ব্যবহারকারী-পাঠযোগ্য লেবেল৷ যদি এই অ্যাট্রিবিউট সেট করা না থাকে, তাহলে সম্পূর্ণরূপে অ্যাপ্লিকেশানের জন্য সেট করা লেবেল পরিবর্তে ব্যবহার করা হয়। আরও তথ্যের জন্য, <application> উপাদানের label বৈশিষ্ট্য দেখুন।

লেবেলটি সাধারণত একটি স্ট্রিং রিসোর্সের রেফারেন্স হিসাবে সেট করা হয়, যাতে এটি ব্যবহারকারী ইন্টারফেসের অন্যান্য স্ট্রিংগুলির মতো স্থানীয়করণ করা যায়। যাইহোক, আপনি অ্যাপ্লিকেশনটি বিকাশ করার সময় সুবিধা হিসাবে, এটি একটি কাঁচা স্ট্রিং হিসাবেও সেট করা যেতে পারে।

android:multiprocess
যদি অ্যাপটি একাধিক প্রক্রিয়ায় চলে, তাহলে এই বৈশিষ্ট্যটি নির্ধারণ করে যে বিষয়বস্তু প্রদানকারীর একাধিক দৃষ্টান্ত তৈরি করা হয়েছে কিনা। "true" হলে, অ্যাপের প্রতিটি প্রক্রিয়ার নিজস্ব বিষয়বস্তু প্রদানকারী বস্তু রয়েছে। "false" হলে, অ্যাপের প্রক্রিয়াগুলি শুধুমাত্র একটি বিষয়বস্তু প্রদানকারী বস্তু শেয়ার করে। ডিফল্ট মান "false"

এই পতাকাটিকে "true" তে সেট করা আন্তঃপ্রক্রিয়া যোগাযোগের ওভারহেড হ্রাস করে কর্মক্ষমতা উন্নত করতে পারে, তবে এটি প্রতিটি প্রক্রিয়ার মেমরি পদচিহ্নও বাড়িয়ে দেয়।

android:name
বিষয়বস্তু সরবরাহকারীকে প্রয়োগ করে এমন শ্রেণীর নাম, ContentProvider একটি উপশ্রেণী। এটি সাধারণত একটি সম্পূর্ণ যোগ্য শ্রেণীর নাম, যেমন "com.example.project.TransportationProvider" । যাইহোক, শর্টহ্যান্ড হিসাবে, নামের প্রথম অক্ষরটি একটি পিরিয়ড হলে, এটি <manifest> উপাদানে নির্দিষ্ট করা প্যাকেজ নামের সাথে যুক্ত করা হয়।

কোন ডিফল্ট নেই. নাম উল্লেখ করতে হবে।

android:permission
একটি অনুমতির নাম যা ক্লায়েন্টদের অবশ্যই সামগ্রী প্রদানকারীর ডেটা পড়তে বা লিখতে হবে। এই বৈশিষ্ট্যটি পড়া এবং লেখা উভয়ের জন্য একক অনুমতি সেট করার একটি সুবিধাজনক উপায়। যাইহোক, readPermission , writePermission , এবং grantUriPermissions এট্রিবিউটগুলি এর চেয়ে প্রাধান্য পায়৷

যদি readPermission অ্যাট্রিবিউটটিও সেট করা থাকে, তাহলে এটি কন্টেন্ট প্রদানকারীকে জিজ্ঞাসা করার জন্য অ্যাক্সেস নিয়ন্ত্রণ করে। যদি writePermission অ্যাট্রিবিউট সেট করা থাকে, তাহলে এটি প্রদানকারীর ডেটা পরিবর্তন করার জন্য অ্যাক্সেস নিয়ন্ত্রণ করে।

অনুমতি সম্পর্কে আরও তথ্যের জন্য, অ্যাপ ম্যানিফেস্ট ওভারভিউ এবং নিরাপত্তা টিপসের অনুমতি বিভাগটি দেখুন।

android:process
যে প্রক্রিয়ায় বিষয়বস্তু প্রদানকারী কাজ করে তার নাম। সাধারণত, একটি অ্যাপ্লিকেশনের সমস্ত উপাদান অ্যাপ্লিকেশনের জন্য তৈরি ডিফল্ট প্রক্রিয়ায় চলে। এটি অ্যাপ্লিকেশন প্যাকেজ হিসাবে একই নাম আছে.

<application> উপাদানের process বৈশিষ্ট্য সমস্ত উপাদানের জন্য একটি ভিন্ন ডিফল্ট সেট করতে পারে। কিন্তু প্রতিটি কম্পোনেন্ট তার নিজস্ব process অ্যাট্রিবিউট দিয়ে ডিফল্টটিকে ওভাররাইড করতে পারে, আপনাকে একাধিক প্রক্রিয়ায় আপনার অ্যাপ্লিকেশন ছড়িয়ে দিতে দেয়।

যদি এই অ্যাট্রিবিউটের জন্য বরাদ্দ করা নামটি একটি কোলন ( : ) দিয়ে শুরু হয়, একটি নতুন প্রক্রিয়া, অ্যাপ্লিকেশনের জন্য ব্যক্তিগত, যখন এটি প্রয়োজন হয় তখন তৈরি করা হয় এবং সেই প্রক্রিয়ায় কার্যকলাপটি চলে।

যদি প্রক্রিয়ার নামটি একটি ছোট হাতের অক্ষর দিয়ে শুরু হয়, তবে কার্যকলাপটি সেই নামের একটি বিশ্বব্যাপী প্রক্রিয়ায় চলে, যদি এটি করার অনুমতি থাকে। এটি বিভিন্ন অ্যাপ্লিকেশনের উপাদানগুলিকে একটি প্রক্রিয়া ভাগ করতে দেয়, সম্পদের ব্যবহার হ্রাস করে।

android:readPermission

একটি অনুমতি যা ক্লায়েন্টদের অবশ্যই সামগ্রী প্রদানকারীকে জিজ্ঞাসা করতে হবে।

যদি প্রদানকারী android:grantUriPermissions কে "true" তে সেট করে, অথবা যদি একটি প্রদত্ত ক্লায়েন্ট একটি <grant-uri-permission> সাবলিমেন্টের শর্ত পূরণ করে, তাহলে ক্লায়েন্ট সামগ্রী প্রদানকারীর ডেটাতে অস্থায়ীভাবে পড়ার অ্যাক্সেস পেতে পারে।

permission এবং writePermission বৈশিষ্ট্যগুলিও দেখুন।

android:syncable
বিষয়বস্তু প্রদানকারীর নিয়ন্ত্রণে থাকা ডেটা সার্ভারের ডেটার সাথে সিঙ্ক্রোনাইজ করা যায় কিনা। এটা হতে পারে "true" এবং না হলে "false"
android:writePermission

একটি অনুমতি যা ক্লায়েন্টদের সামগ্রী প্রদানকারী দ্বারা নিয়ন্ত্রিত ডেটাতে পরিবর্তন করতে হবে।

যদি প্রদানকারী android:grantUriPermissions কে "true" তে সেট করে, অথবা যদি একটি প্রদত্ত ক্লায়েন্ট একটি <grant-uri-permission> সাব-এলিমেন্টের শর্ত পূরণ করে, তাহলে ক্লায়েন্ট সামগ্রী প্রদানকারীর ডেটা পরিবর্তন করতে অস্থায়ী লেখার অ্যাক্সেস পেতে পারে।

এছাড়াও permission এবং readPermission বৈশিষ্ট্য দেখুন.

প্রবর্তিত:
API স্তর 1
আরো দেখুন:
বিষয়বস্তু প্রদানকারীরা