নিরূপন করতে, আপনি যদি কনটেন্ট ইউআরআই থেকে একটি ফাইল ডিরেক্টরী উদ্ধার করতে চান, ইউআরআই এর অথরিটি পেতে Uri.getAuthority()কল করে ইউআরআই এর সাথে সংশ্লিষ্ট কনটেন্ট প্রভাইডার নিরূপন করুন। ফলাফলের দুইটা সম্ভাব্য ভ্যালু আছে:
MediaStore.AUTHORITY
ইউআরআই একটি ফাইলের জন্য বা ফাইল MediaStore দ্বারা অনুসরিত। MediaStore থেকে পূর্ণ ফাইল নেম উদ্ধার করুন এবঙ ফাইল নেম থেকে ডিরেক্টরী অর্জন করুন।
অন্য যেকোন অথরিটি ভ্যালু
অন্য কনটেন্ট প্রভাইডার থেকে একটি কনটেন্ট ইউআরআই। কনটেন্ট ইউআরআই এর সাথে সংশ্লিষ্ট ডাটা প্রদর্শন করে কিন্তু ফাইল ডিরেক্টরী পায় না।
একটি MediaStore কনটেন্ট ইউআরআই এর জন্য ডিরেক্টরী পেতে, একটি অনুসন্ধান রান করুন যা Uri আর্গুমেন্ট এর জন্য ইনকামিং কনটেন্ট ইউআরআই এবং প্রজেকশন এর জন্য কলাম MediaColumns.DATA নির্দিষ্ট করে। ইউআরআ্ই কর্তৃক পরিবেশিত ফাইলের জন্য ফেরত আসা Cursor পূর্ণ পাথ এবং নাম ধারন করে। এই পাথ সকল অন্য ফাইল ধারন করে যা অ্যান্ড্রয়েড বিম ফাইল ট্রান্সফার মাত্রই ডিভাইসে কপি করেছে।
নিম্নোক্ত খন্ডাংশ টি আপনাকে দেখায় কীভাবে কনটেন্ট ইউআরআই এর অথরিটি পরীক্ষা করতে হয় এবং স্থানান্তরিত ফাইলের জন্য পাথ এবং নেম উদ্ধার করে:
...
public String handleContentUri(Uri beamUri) {
// Position of the filename in the query Cursor
int filenameIndex;
// File object for the filename
File copiedFile;
// The filename stored in MediaStore
String fileName;
// Test the authority of the URI
if (!TextUtils.equals(beamUri.getAuthority(), MediaStore.AUTHORITY)) {
/*
* Handle content URIs for other content providers
*/
// For a MediaStore content URI
} else {
// Get the column that contains the file name
String[] projection = { MediaStore.MediaColumns.DATA };
Cursor pathCursor =
getContentResolver().query(beamUri, projection,
null, null, null);
// Check for a valid cursor
if (pathCursor != null &&
pathCursor.moveToFirst()) {
// Get the column index in the Cursor
filenameIndex = pathCursor.getColumnIndex(
MediaStore.MediaColumns.DATA);
// Get the full file name including path
fileName = pathCursor.getString(filenameIndex);
// Create a File object for the filename
copiedFile = new File(fileName);
// Return the parent directory of the file
return new File(copiedFile.getParent());
} else {
// The query didn't work; return null
return null;
}
}
}
...
একটি কনটেন্ট প্রভাইডার থেকে ডাটা উদ্ধার করা সম্পর্কে আরও জানতে, Retrieving Data from the Provider সেকশনটি দেখুন।