আমার অনুসন্ধানগুলি:
কোনও ফাইল পুনরুদ্ধার করার বিভিন্ন উপায় নিয়ে কাজ করতে আপনার বেশ কয়েকটি ফিল্টার প্রয়োজন। অর্থাত্, জিমেইল সংযুক্তি দ্বারা, ফাইল এক্সপ্লোরার দ্বারা, এইচটিটিপি দ্বারা, এফটিপি দ্বারা ... এঁরা সকলেই খুব আলাদা ইন্টেন্ট প্রেরণ করেন।
এবং আপনার ক্রিয়াকলাপের কোডগুলিতে আপনার ক্রিয়াকলাপটিকে ট্রিগার করতে পারে এমন অভিপ্রায়টি ফিল্টার করে ফেলতে হবে।
নীচের উদাহরণের জন্য, আমি একটি জাল ফাইল টাইপ new.mrz তৈরি করেছি। এবং আমি এটি জিমেইল সংযুক্তি এবং ফাইল এক্সপ্লোরার থেকে পুনরুদ্ধার করেছি।
ক্রিয়াকলাপটি অনক্রিট () এ যুক্ত হয়েছে:
Intent intent = getIntent();
String action = intent.getAction();
if (action.compareTo(Intent.ACTION_VIEW) == 0) {
String scheme = intent.getScheme();
ContentResolver resolver = getContentResolver();
if (scheme.compareTo(ContentResolver.SCHEME_CONTENT) == 0) {
Uri uri = intent.getData();
String name = getContentName(resolver, uri);
Log.v("tag" , "Content intent detected: " + action + " : " + intent.getDataString() + " : " + intent.getType() + " : " + name);
InputStream input = resolver.openInputStream(uri);
String importfilepath = "/sdcard/My Documents/" + name;
InputStreamToFile(input, importfilepath);
}
else if (scheme.compareTo(ContentResolver.SCHEME_FILE) == 0) {
Uri uri = intent.getData();
String name = uri.getLastPathSegment();
Log.v("tag" , "File intent detected: " + action + " : " + intent.getDataString() + " : " + intent.getType() + " : " + name);
InputStream input = resolver.openInputStream(uri);
String importfilepath = "/sdcard/My Documents/" + name;
InputStreamToFile(input, importfilepath);
}
else if (scheme.compareTo("http") == 0) {
}
else if (scheme.compareTo("ftp") == 0) {
}
}
জিমেইল সংযুক্তি ফিল্টার:
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" />
<data android:mimeType="application/octet-stream" />
</intent-filter>
- লোগো: সামগ্রীর উদ্দেশ্য সনাক্ত: অ্যান্ড্রয়েড.আইএনটি.অ্যাকশন.ভিউ: সামগ্রী: //gmail-ls/l.foul@gmail.com/messages/2950/attachments/0.1/BEST/false: অ্যাপ্লিকেশন / অকটেট-স্ট্রিম: নতুন। মিঃ
ফাইল এক্সপ্লোরার ফিল্টার:
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:pathPattern=".*\\.mrz" />
</intent-filter>
- লোগো: ফাইলের উদ্দেশ্য সনাক্ত করা হয়েছে: android.intent.action.view: ফাইল: ///storage/sdcard0/My%20 ডকুমেন্টস / new.mrz: নাল: new.mrz
এইচটিটিপি ফিল্টার:
<intent-filter android:label="@string/rbook_viewer">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:pathPattern=".*\\.mrz" />
</intent-filter>
উপরে ব্যবহৃত ব্যক্তিগত ফাংশন:
private String getContentName(ContentResolver resolver, Uri uri){
Cursor cursor = resolver.query(uri, null, null, null, null);
cursor.moveToFirst();
int nameIndex = cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME);
if (nameIndex >= 0) {
return cursor.getString(nameIndex);
} else {
return null;
}
}
private void InputStreamToFile(InputStream in, String file) {
try {
OutputStream out = new FileOutputStream(new File(file));
int size = 0;
byte[] buffer = new byte[1024];
while ((size = in.read(buffer)) != -1) {
out.write(buffer, 0, size);
}
out.close();
}
catch (Exception e) {
Log.e("MainActivity", "InputStreamToFile exception: " + e.getMessage());
}
}