একটি নির্দিষ্ট ফাইল এক্সটেনশনের জন্য অ্যান্ড্রয়েড অভিপ্রায় ফিল্টার?


95

আমি নেট থেকে একটি নির্দিষ্ট এক্সটেনশান সহ একটি ফাইল ডাউনলোড করতে সক্ষম হতে চাই এবং এটি মোকাবেলায় এটি আমার অ্যাপ্লিকেশনটিতে পৌঁছে দিয়েছিল তবে আমি অভিযুক্ত ফিল্টারটি বের করতে সক্ষম হইনি been ফাইল টাইপ মাইম টাইপগুলিতে অন্তর্ভুক্ত নয় এবং আমি ব্যবহার করার চেষ্টা করেছি

<data android:path="*.ext" />

কিন্তু আমি এটি কাজ করতে পারি না।

উত্তর:


121

এটি এটিকে কাজ করতে আমি কীভাবে আমার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে আমার ক্রিয়াকলাপটি সংজ্ঞায়িত করেছি তা এখানে।

<activity android:name="com.keepassdroid.PasswordActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="file" />
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*\\.kdb" />
        <data android:host="*" />
    </intent-filter>
</activity>

schemeএর fileনির্দেশ করে যে এটি যখন একটি স্থানীয় ফাইল (বরং HTTP- র মত প্রোটোকল বেশি) খোলা হয় ঘটতে করা উচিত নয়।

mimeTypeযে */*কোনও মাইম টাইপের সাথে মিল রাখতে সেট করা যেতে পারে ।

pathPatternআপনি যেখানে কোন এক্সটেনশনটি মিলতে চান তা নির্দিষ্ট করে (এই উদাহরণে .kdb)। .*শুরুতে অক্ষরের কোনো squence সাথে মেলে। এই স্ট্রিংগুলিতে ডাবল পলায়ন প্রয়োজন, তাই \\\\.আক্ষরিক সময়ের সাথে মেলে। তারপরে, আপনি আপনার ফাইলের এক্সটেনশান দিয়ে শেষ করবেন। প্যাথপ্যাটার্ন সহ একটি সতর্কতা হ'ল এটি .*কোনও লোভী মিল নয় যা আপনি আশা করতে পারেন এটি যদি নিয়মিত প্রকাশ হয়। এই প্যাটার্নটি পাথের সাথে মেলে ব্যর্থ হবে যেখানে এর .আগে একটি রয়েছে .kdb। এই ইস্যুটির আরও বিশদ আলোচনার জন্য এবং এখানে কর্মপরিকল্পনা দেখুন

শেষ অবধি, অ্যান্ড্রয়েড ডকুমেন্টেশন অনুসারে, অ্যাট্রিবিউটটি কাজ করার জন্য hostএবং schemeবৈশিষ্ট্য উভয়ই প্রয়োজন pathPattern, সুতরাং যে কোনও কিছুর সাথে মিল রাখতে কেবল ওয়াইল্ডকার্ডে সেট করুন।

এখন, আপনি যদি .kdbলিন্ডা ফাইল ম্যানেজারের মতো কোনও অ্যাপ্লিকেশনটিতে কোনও ফাইল নির্বাচন করেন, তবে আমার অ্যাপ্লিকেশনটি বিকল্প হিসাবে প্রদর্শিত হবে। আমার মনে রাখা উচিত যে এটিই আপনাকে এই ফাইল টাইপটি ব্রাউজারে ডাউনলোড করতে দেয় না, কারণ এটি কেবল ফাইল স্কিমের সাথে নিবন্ধন করে। আপনার ফোনে লিন্ডা ফাইল ম্যানেজারের মতো একটি অ্যাপ্লিকেশন থাকার কারণে আপনি যেকোন ফাইল টাইপ ডাউনলোড করার সুযোগ দেন gener


4
এটি এখানে কাজ করে না। প্রথমে মাইমটাইপ = " " দিয়ে, প্যাকেজটি অ্যান্ড্রয়েড ২.১ এ ইনস্টল হয় না, আমি একটি ম্যালফর্মডিমাইমটাইপ এক্সসেপশন পেয়েছি। "* / " ব্যবহার করে এটি ঠিক হয়ে যায় তবে তার পরেও, এই ফিল্টারটির কোনও প্রভাব নেই। আমি বর্তমানে স্কাইফায়ার ব্রাউজারের সাথে পরীক্ষা করছি যা স্ট্যান্ডার্ড অ্যান্ড্রয়েড ব্রাউজারের মতো মাইম ধরণের ডাউনলোড সংরক্ষণ করে না। এবং স্কাইফায়ার ডাউনলোডের তালিকায় কোনও ফাইলে ক্লিক করার সময় ফাইলের ডেটা দিয়ে সরল দর্শনের উদ্দেশ্যটি সম্প্রচারিত করা হয়। এবং এই অভিপ্রায় ফিল্টার মেলে না।
অলিভিয়ের্গ

@ ব্রায়ান পেলিন: আমি .kdbxযখন এই পোস্টের দিকে ইঙ্গিত করা হয়েছিল তখন আমি ইএস ফাইল এক্সপ্লোরারকে কেডিবিএক্স ফাইল খোলার অনুমতি দিতে এক্সটেনশনে একটি মাইম-টাইপ বেঁধে রাখার উপায়টি সন্ধান করছিলাম। স্পষ্টতই যদি উদ্দেশ্যটির একটি খালি MIME টাইপ থাকে তবে এই অভিপ্রায় ফিল্টারটি কাজ করবে না !! এছাড়াও, কর্ম হিসাবে EMPTY স্ট্রিং এবং কেবল একটি ইউআরআই সহ একটি উদ্দেশ্য থাকতে পারে। গুগল ডক্স সেই অভিপ্রায় সাড়া দিয়েছিল তাই এটি অবশ্যই বৈধ হওয়া উচিত।
billc.cn

4
কেবল পরিষ্কার করার জন্য, মাইমটাইপটি "* / *" হওয়া উচিত বলে আমি মনে করি কিছু লোক তাদের * গুলি পালাতে ভুলে গেছে
ব্রায়ান পেলিন

4
এটি অ্যান্ড্রয়েড ৪ এর সাথে কাজ করবে না You আপনার <data>চারটি বৈশিষ্ট্যের সাথে ট্যাগ ব্যবহার করা উচিত । 4 টি ট্যাগ থাকা যৌক্তিক OR - যা অ্যান্ড্রয়েড 2 এর সাথে কাজ করেছে - তবে অ্যান্ড্রয়েড 4 আরও কঠোর। দেখুন stackoverflow.com/questions/20650378/...
মার্টিন

4
যদি \\\\.ম্যাচ একটি আক্ষরিক কাল, কেন আপনি তা গঠনের ব্যবহার করে না .kdbভালো এক্সটেনশন: \\\\.kdb?
Lealo

38

গুগলের নিজস্ব ডকুমেন্টেশন থেকে নয়, এই বিষয়ে অনেক ভুল তথ্য রয়েছে। সেরা, এবং অদ্ভুত যুক্তি দেওয়া, সম্ভবত একমাত্র আসল ডকুমেন্টেশন হ'ল সোর্স কোড।

অভিপ্রায় ফিল্টার বাস্তবায়ন যুক্তিবিজ্ঞান যে প্রায় বিবরণ defies হয়েছে। পার্সার কোড ধাঁধার অন্যান্য প্রাসঙ্গিক টুকরা।

নিম্নলিখিত ফিল্টারগুলি বুদ্ধিমান আচরণের খুব কাছাকাছি আসে। "file"প্রকল্পের উদ্দেশ্যগুলির জন্য পাথের নিদর্শনগুলি প্রয়োগ হয় ।

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

আমি "http"এখানে অন্যান্য স্কিম অন্তর্ভুক্ত করা হয়নি , তবে তারা সম্ভবত এই সমস্ত ফিল্টার উপর দুর্দান্ত কাজ করবে।

বিজোড় স্কিমটি হ'ল "content", যার জন্য এক্সটেনশনটি ফিল্টারটিতে উপলব্ধ নয়। তবে যতক্ষণ সরবরাহকারী আপনার এমআইএমএম টাইপটি বর্ণনা করে (উদাহরণস্বরূপ সংযুক্তিটি আনপ্যাম্পড না করার জন্য জিএমআইএম টাইপটি পাস করবে), ফিল্টারটি মিলবে।

সচেতন হতে হবে:

  1. ফিল্টারগুলিতে কোনও কিছুই ধারাবাহিকভাবে আচরণ করে না সে সম্পর্কে সচেতন থাকুন, এটি বিশেষ মামলার এক ধাঁধা এবং নকশা লক্ষ্য হিসাবে অন্তত বিস্ময়ের নীতি লঙ্ঘন করে। অ্যালগরিদমের সাথে মেলে এমন কোনও প্যাটার্ন একই সিনট্যাক্স বা আচরণ অনুসরণ করে না। ক্ষেত্রের অনুপস্থিতি কখনও কখনও ওয়াইল্ডকার্ড হয় এবং কখনও কখনও তা হয় না। ডেটা উপাদানগুলির মধ্যে থাকা বৈশিষ্ট্যগুলি কখনও কখনও একসাথে যেতে হবে এবং কখনও কখনও গ্রুপিং উপেক্ষা করতে হবে। এটি সত্যিই আরও ভাল করা যেতে পারে।
  2. schemeঅ্যান্ড দ্য অ্যাডগুলি hostঅবশ্যই pathনিয়মের সাথে মিলের জন্য নির্দিষ্ট করা উচিত (বর্তমানে গুগলের এপিআই গাইডের বিপরীতে)।
  3. কমপক্ষে ES ফাইল এক্সপ্লোরার একটি মাইম টাইপের সাথে ইন্টেন্ট জেনারেট করে "", যা খুব আলাদাভাবে ফিল্টার করা হয় null, এটি স্পষ্টভাবে মিলানো অসম্ভব, এবং কেবল ঝুঁকিপূর্ণ "*/*"ফিল্টারটির সাথে মিলে যায় ।
  4. "*/*"ফিল্টার একটি সঙ্গে ইন্টেন্টসমূহ মেলে না হবে nullযে সব সময়ে কোন MIME প্রকার সঙ্গে এই নির্দিষ্ট ঘটনাতে জন্য পৃথক ফিল্টার প্রয়োজন - MIME প্রকার।
  5. "content"প্রকল্প শুধুমাত্র MIME প্রকার দ্বারা মেলানো যাবে না কারণ মূল ফাইলের নাম অভিপ্রায় (অন্তত Gmail এর সাথে) এ পাওয়া যায় না।
  6. পৃথক "data"উপাদানগুলিতে গুণাবলীর গোষ্ঠীকরণটি (প্রায়) ব্যাখ্যার সাথে অপ্রাসঙ্গিক, এর নির্দিষ্ট ব্যতিক্রম hostএবং port- যা একসাথে জুড়ে। সমস্ত কিছুর কোনও "data"উপাদান বা "data"উপাদানগুলির মধ্যে কোনও নির্দিষ্ট সংযোগ নেই ।

এই সব মনে রেখে, এখানে মন্তব্য সহ একটি উদাহরণ:

<!--
     Capture content by MIME type, which is how Gmail broadcasts
     attachment open requests.  pathPattern and file extensions
     are ignored, so the MIME type *MUST* be explicit, otherwise
     we will match absolutely every file opened.
-->
<intent-filter
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:priority="50" >
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />

    <data android:scheme="file" />
    <data android:scheme="content" />
    <data android:mimeType="application/vnd.my-type" />
</intent-filter>

<!--
     Capture file open requests (pathPattern is honoured) where no
     MIME type is provided in the Intent.  An Intent with a null
     MIME type will never be matched by a filter with a set MIME
     type, so we need a second intent-filter if we wish to also
     match files with this extension and a non-null MIME type
     (even if it is non-null but zero length).
-->
<intent-filter
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:priority="50" >
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />

    <data android:scheme="file" />
    <data android:host="*" />

    <!--
         Work around Android's ugly primitive PatternMatcher
         implementation that can't cope with finding a . early in
         the path unless it's explicitly matched.
    -->
    <data android:pathPattern=".*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.my-ext" />
</intent-filter>

<!--
     Capture file open requests (pathPattern is honoured) where a
     (possibly blank) MIME type is provided in the Intent.  This
     filter may only be necessary for supporting ES File Explorer,
     which has the probably buggy behaviour of using an Intent
     with a MIME type that is set but zero-length.  It's
     impossible to match such a type except by using a global
     wildcard.
-->
<intent-filter
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:priority="50" >
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />

    <data android:scheme="file" />
    <data android:host="*" />
    <data android:mimeType="*/*" />

    <!--
         Work around Android's ugly primitive PatternMatcher
         implementation that can't cope with finding a . early in
         the path unless it's explicitly matched.
    -->
    <data android:pathPattern=".*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.my-ext" />
    <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.my-ext" />
</intent-filter>

দুর্দান্ত যে আপনি \\ .. এর জন্য অনেকগুলি প্রমাণের প্রয়োজন এবং অন্যান্য ওপরেও দাঁড়িয়েছেন। গুগল এটি 4.2 দ্বারা স্থির করা উচিত, কি হতাশ। হায় আফসোস, আমার এখনও এমন কিছু মামলা রয়েছে যা আপনার উদাহরণটি ঠিক হয়নি বলে মনে হচ্ছে। ".Gblorb" এর মতো 6 চ এক্সটেনশানগুলির সাথে কোনও সমস্যা আছে যে আমার কোডটি 3 টি বর্ণ বা তারও কম দিয়ে ভাল কাজ করে?
রাউন্ডস্প্যারো হিলিটেক্স

এই প্রশ্নের সেরা উত্তর এবং আমার মতে অনুরূপ প্রশ্নের! দুঃখের বিষয়, যতক্ষণ না ফাইল এক্সটেনশনের মাধ্যমে সামগ্রীর অভিপ্রায়গুলি মেলা সম্ভব না (যতক্ষণ আপনি ৫ হিসাবে চিহ্নিত করেছেন), ভুলগুলির সাথেও মিল না দিয়ে সমস্ত সঠিক ইন্টেন্টের জন্য নির্ভরযোগ্যভাবে ফিল্টার করা সম্ভব নয়। এটি সেই ক্ষেত্রে যেখানে আপনি কাস্টম মাইম প্রকারটি ব্যবহার করতে পারবেন না for সুতরাং যতক্ষণ না অ্যান্ড্রয়েড এর জন্য সমাধান সরবরাহ করে না ততক্ষণ এটি আমার জন্য অ্যাপ্লিকেশনটির মধ্যে ফাইল-চয়নকারী হতে চলেছে ... আমি ব্যবহারকারীকে অসামঞ্জস্য আচরণের সাথে বিভ্রান্ত করতে চাই না।
বেনজামিন বিসিঞ্জার

4
অনেক অনেক ধন্যবাদ .. আপনি কেবল আমার দিনটি তৈরি করেছেন .. আমার ক্ষেত্রে আমাকে <data android:mimeType="*/*" /> তিনটি বিকল্পের মতো মাইমটাইপ পরিবর্তন করতে হয়েছিল এবং এটি গুগল ড্রাইভ এবং জিমেইল সহ সমস্ত অ্যাপ্লিকেশনগুলির জন্য আকর্ষণীয় কাজ করেছিল।
habষভ ওয়াধওয়া

4
আমি আপনাকে অনেক ধন্যবাদ জানাতে চাই, @ ডেভিড সান্টি। কীভাবে এটি পরিচালনা করতে হবে তা বোঝার চেষ্টা করার জন্য আপনি আমার 24 ঘন্টা দীর্ঘ বেদনা বন্ধ করে দিয়েছেন। আমি স্ট্যাকওভারফ্লো . com/ q / 18577860/ 6110285 , স্ট্যাকওভারফ্লো. com / a/ 8599921 / 6110285 এবং আরও অনেকগুলি যা একই রকমের চেষ্টা করেছি। এই একটাই কাজ করেছে।
পিটিক্স

24

আমাকে অবশ্যই স্বীকার করতে হবে যে অ্যান্ড্রয়েডের ফাইল সিস্টেম থেকে ইমেল এবং ফাইলগুলি থেকে সংযুক্তিগুলি খোলার সহজ কাজটি এখন পর্যন্ত সবচেয়ে বেশি পাগল করার একটি অভিজ্ঞতা হয়ে দাঁড়িয়েছে। খুব বেশি ফাইল বা খুব কম সংখ্যক ফাইল পরিচালনা করা সহজ। তবে ঠিক এটি পাওয়া শক্ত। স্ট্যাকওভারফ্লোতে পোস্ট করা বেশিরভাগ সমাধান আমার পক্ষে সঠিকভাবে কাজ করে না।

আমার প্রয়োজনীয়তাগুলি ছিল:

  • আমার অ্যাপ্লিকেশনটির সাথে আমার অ্যাপ্লিকেশনটির সাথে সংযুক্তিগুলিকে ভাগ করে নিতে হবে
  • আমার অ্যাপ্লিকেশনটির ফাইল স্টোরেজে ফাইলগুলি হ্যান্ডেলগুলি থাকতে হবে যা আমার অ্যাপ্লিকেশন দ্বারা তৈরি হয়েছিল এবং একটি নির্দিষ্ট এক্সটেনশান রয়েছে

সম্ভবত এই কাজটি করার সর্বোত্তম উপায় হ'ল আপনার সংযুক্তিগুলির জন্য একটি কাস্টম মাইম টাইপ নির্দিষ্ট করা। এবং আপনি সম্ভবত একটি কাস্টম ফাইল এক্সটেনশন চয়ন করতে হবে। সুতরাং আসুন আমরা আমাদের অ্যাপটিকে "কুল অ্যাপ" বলা হয় এবং আমরা শেষে ".কুল" রয়েছে এমন ফাইল সংযুক্তি তৈরি করি।

এটি আমার লক্ষ্যে পৌঁছানোর সবচেয়ে কাছাকাছি এবং এটি কাজ করে ... সন্তোষজনক।

<!-- Register to handle email attachments -->
<!-- WARNING: Do NOT use android:host="*" for these as they will not work properly -->
<intent-filter>
    <!-- needed for properly formatted email messages -->
    <data
        android:scheme="content"
        android:mimeType="application/vnd.coolapp"
        android:pathPattern=".*\\.cool" />
    <!-- needed for mangled email messages -->
    <data
        android:scheme="content"
        android:mimeType="application/coolapp"
        android:pathPattern=".*\\.cool" />
    <!-- needed for mangled email messages -->
    <data
        android:scheme="content"
        android:mimeType="application/octet-stream"
        android:pathPattern=".*\\.cool" />

    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

<!-- Register to handle file opening -->
<intent-filter>
    <data android:scheme="file"
          android:mimeType="*/*"
          android:pathPattern=".*\\.cool"
          android:host="*"/>

    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

মন্তব্য:

  • দ্য pathPatternবেশী বা কম সংযুক্তি (যখন ব্যবহার করার জন্য উপেক্ষা করা বলে মনে হয় android:scheme="content")। কেউ যদি কেবলমাত্র নির্দিষ্ট কিছু নিদর্শনগুলিতে সাড়া দেওয়ার জন্য পাথপ্যাটার্ন পান তবে আমি কীভাবে তা দেখতে শিহরিত হব।
  • জিমেইল অ্যাপ্লিকেশনটি আমি যুক্ত করে থাকলে চয়নকারীতে আমার অ্যাপ্লিকেশনটিকে তালিকাভুক্ত করতে অস্বীকৃতি জানায় android:host="*" বৈশিষ্ট্যটি ।
  • এটি সম্ভবত এখনও যদি এটি ব্যবহার করে intent-filter ব্লকগুলি একত্রিত করা তবে আমি এটি যাচাই করি নি।
  • কোনও ফাইল ডাউনলোড করার সময় ব্রাউজার থেকে অনুরোধগুলি পরিচালনা android:scheme="http"করতে ব্যবহার করা যেতে পারে। মনে রাখবেন যে নির্দিষ্ট ব্রাউজারগুলি android:mimeTypeতাই পরীক্ষা-নিরীক্ষা করতে পারে android:mimeType="*/*"এবং ডিবাগারটি যা যা দিয়েছিল তা যাচাই করে এবং তারপরে ফিল্টারিংকে আরও শক্ত করে তোলে যে বিরক্তিকর অ্যাপটি হ্যান্ডেল করে না সবকিছু করে
  • কিছু নির্দিষ্ট ফাইল এক্সপ্লোরার আপনার ফাইলগুলির জন্য মাইমাম-প্রকারগুলিও গণ্ডগোল করবে। সর্বোপরিintent-filter স্যামসাং এর "আমার ফাইল" একটি গ্যালাক্সি এস 3 অ্যাপ্লিকেশান সাথে পরীক্ষিত হয়। FX এক্সপ্লোরার এখনও ফাইলটি সঠিকভাবে খুলতে অস্বীকার করেছে এবং আমি এটিও লক্ষ্য করেছি যে অ্যাপ্লিকেশন আইকনটি ফাইলগুলির জন্য ব্যবহৃত হয় না। আবার কেউ যদি কাজ করতে পায় তবে নীচে মন্তব্য করুন।

আমি আশা করি আপনি এটি দরকারী খুঁজে পাবেন এবং সমস্ত সম্ভাব্য সংমিশ্রণে আপনাকে দিন নষ্ট করতে হবে না। উন্নতির জন্য জায়গা রয়েছে তাই মন্তব্যগুলি স্বাগত।


এটি আমার জন্য কার্যক্ষম সমাধান। কন্টেন্ট-স্কিম এবং ফাইল-স্কিমের জন্য পৃথক <ইন্টেন্ট-ফিল্টার> রেজিস্ট্রেশন করা কৌশলটি সফল হয়েছে! ধন্যবাদ!
মেহলিফিকেশন

ধন্যবাদ! আমার জন্য কাজ করেছেন। গ্যালাক্সি এস 6 এ জিমেইল অ্যাপ এবং স্যামসুং মাই ফাইল উভয় অ্যাপ্লিকেশনই আপনার সমাধানটি ব্যবহার করে আমার অ্যাপ্লিকেশনটির সাথে ফাইল খুলতে সক্ষম হয়েছিল!
হারিস

"অ্যাপের নাম" ঠিক কী? (আমার ক্ষেত্রে, মানব-পঠনযোগ্য অ্যাপের নামটির মধ্যে ফাঁকা জায়গা রয়েছে))
উইলিয়াম জকুশ

@ উইলিয়াম জোকাস দেখে মনে হচ্ছে @ ডেভিডসেইটিটি কেবল স্ট্রিং রিসোর্স ফাইলে অ্যাপ্লিকেশনটির নাম সংরক্ষণ করছে। স্পেসগুলি ভাল হওয়া উচিত। android:labelইন্টেন্ট ফিল্টারটির জন্য ব্যবহৃত স্ট্রিংটি সেই স্ট্রিং যা ব্যবহারকারী চয়নকারী মেনুতে দেখতে পাবেন। ডিফল্টরূপে অ্যাপ্লিকেশন নাম ব্যবহৃত হয়।
ওহমেন

"গুগল ড্রাইভ" অ্যাপ্লিকেশনটির জন্য আমার কী ব্যবহার করা উচিত?
অ্যান্ড্রয়েড বিকাশকারী

9

উপরে ব্রায়ানের উত্তর আমাকে 90% পথ পেয়েছে এটি শেষ করতে, মাইম টাইপের জন্য আমি ব্যবহার করেছি

android:mimeType="*/*"

আমি সন্দেহ করি যে পূর্ববর্তী পোস্টারগুলি একই বিবরণ পোস্ট করার চেষ্টা করেছে, কিন্তু স্টারওভারফ্লো কোড হিসাবে স্টার স্ল্যাশ স্টারকে কোয়েটিং করছে, স্ট্যাকওভারফ্লো এটিকে কেবল একটি স্ল্যাশ হিসাবে প্রদর্শন করে।


4
এটির মাধ্যমে আপনি সমস্ত ফাইলের প্রকারগুলি পরিচালনা করবেন এবং এটি সত্যিই বিরক্তিকর (ভাল, যদি আপনার অ্যাপ্লিকেশন সত্যই সবকিছু পরিচালনা করে তবে) ...
টিম অটিন

এইটা খারাপ. দয়া করে আপনার অ্যাপ্লিকেশনগুলির মধ্যে এটি করবেন না।
মঙ্গলবার

8

পরিবর্তে android:path, android:mimeTypeএই নির্দিষ্ট সামগ্রীর টুকরোটির মাইমির ধরণের মান সহ চেষ্টা করুন । এছাড়াও, android:pathওয়াইল্ডকার্ড গ্রহণ করে না - এর android:pathPatternজন্য ব্যবহার করুন ।


"ফাইল টাইপ মাইমটাইপগুলিতে অন্তর্ভুক্ত নয়"? আপনি যে ধরণের বিষয়বস্তু ডাউনলোড করছেন তার জন্য এখনও একটি মাইমটাইপ থাকা উচিত, যদিও এটি একই শব্দ ব্যবহার না করে।
এরিক মিল

কন্টেন্টের ধরণের জন্য একটি মাইমটাইপ রয়েছে, তবে ফাইলটি একটি তৃতীয় পক্ষের অ্যাপ্লিকেশন দ্বারা উত্পাদিত হয়েছিল যা এটির উপরে আলাদা এক্সটেনশন রাখে, তাই আমি মনে করি না যে এটি মাইমটাইপ হিসাবে স্বীকৃত হবে।
কিউরিয়াস

7

আমি যুগ যুগ ধরে এটির জন্য কাজ করার চেষ্টা করছি এবং মূলত সমস্ত প্রস্তাবিত সমাধান চেষ্টা করেছি এবং এখনও নির্দিষ্ট ফাইল এক্সটেনশনগুলি সনাক্ত করতে অ্যান্ড্রয়েড পেতে পারি না। আমার সাথে একটি উদ্দেশ্য-ফিল্টার রয়েছে"*/*" মাইমটাইপযুক্ত যা কেবলমাত্র কাজ করে মনে হয় এবং ফাইল-ব্রাউজারগুলি এখন আমার অ্যাপ্লিকেশনটিকে ফাইল খোলার বিকল্প হিসাবে তালিকাভুক্ত করে, তবে আমার অ্যাপ্লিকেশনটি এখন কোনও ধরণের ফাইল খোলার বিকল্প হিসাবে দেখানো হয়েছে যদিও আমি প্যাথপ্যাটার্ন ট্যাগ ব্যবহার করে নির্দিষ্ট ফাইল এক্সটেনশন নির্দিষ্ট করেছি। এটি এতদূর যায় যে আমি যখন আমার পরিচিতি তালিকায় কোনও পরিচিতি দেখতে / সম্পাদনা করার চেষ্টা করি তখনও অ্যান্ড্রয়েড আমাকে জিজ্ঞাসা করে যে আমি পরিচিতিটি দেখার জন্য আমার অ্যাপ্লিকেশনটি ব্যবহার করতে চাই এবং এটি এমন অনেক পরিস্থিতিতে রয়েছে যা খুব বিরক্তিকর।

অবশেষে আমি এই গুগল গ্রুপগুলির পোস্টটি একই প্রশ্নের সাথে পেয়েছি যা সম্পর্কে একজন প্রকৃত অ্যান্ড্রয়েড ফ্রেমওয়ার্ক ইঞ্জিনিয়ার উত্তর দিয়েছে। তিনি ব্যাখ্যা করেছেন যে অ্যান্ড্রয়েড কেবল ফাইল-এক্সটেনশানগুলি সম্পর্কে কিছুই জানেন না, কেবল এমআইএমএম-প্রকার ( https://groups.google.com/forum/#!topic/android-developers/a7qsSl3vQq0 )।

সুতরাং আমি যা দেখেছি, চেষ্টা করেছি এবং পড়েছি সেগুলি থেকে Android কেবল ফাইল-এক্সটেনশনগুলির মধ্যে পার্থক্য করতে পারে না এবং পথের প্যাটার্ন ট্যাগটি মূলত সময় এবং শক্তির একটি বিশাল অপচয়। আপনি যদি কেবলমাত্র একটি নির্দিষ্ট মাইম-টাইপের (পাঠ্য, ভিডিও বা অডিও বলুন) ফাইলগুলির প্রয়োজনের ভাগ্যবান হন তবে আপনি একটি মাইম-টাইপ সহ একটি ইন্টেন্ট-ফিল্টার ব্যবহার করতে পারেন। আপনার যদি কোনও নির্দিষ্ট ফাইল-এক্সটেনশন বা মাইম-টাইপ দরকার হয় যা অ্যান্ড্রয়েড দ্বারা জানা যায় না তবে আপনি ভাগ্য থেকে দূরে।

আমি যদি এগুলির কোনও সম্পর্কে ভুল হয়ে থাকি তবে দয়া করে আমাকে বলুন, এখন পর্যন্ত আমি প্রতিটি পোস্ট পড়েছি এবং আমি প্রস্তাবিত প্রতিটি সমাধান চেষ্টা করেছি তবে কোনওটিই কাজ করে নি।

এই ধরণের জিনিসগুলি অ্যান্ড্রয়েডে কীভাবে সাধারণ বলে মনে হয় এবং বিকাশকারীদের অভিজ্ঞতা কীভাবে খারাপ হয় তা সম্পর্কে আমি দু'এক পৃষ্ঠা লিখতে পারি, তবে আমি আমার ক্রুদ্ধ বিরক্তি রক্ষা করব;)। আশা করি কাউকে কিছুটা ঝামেলা বাঁচালাম।


4
আপনাকে উত্তেজিত করা হয়েছে কারণ আপনার উত্তরটি একটি দরকারী লিঙ্ক দেয় এবং ডাউনভোটার কোনও মন্তব্য দেয়নি। দুঃখিত তাই কখনও কখনও বন্ধুত্বপূর্ণ হতে পারে, কিন্তু এটি ছেড়ে না।
জন হ্যাটন

5

আপডেট 2020

অ্যানড্রয়েড ইন্টেন্ট ফিল্টারগুলির জন্য সামগ্রী ইউআরআই এবং মাইমাই টাইপের দিকে এগিয়ে গেছে।

সমস্যাটি

কোনও সামগ্রী ইউআরআই-তে অবশ্যই ফাইলের প্রসার বা নাম থাকতে হয় না এবং বিষয়বস্তু / ফাইল সরবরাহকারী বিভিন্ন অ্যাপ্লিকেশনগুলির মধ্যে এটি আলাদা হবে।

এখানে একই ইমেল সংযুক্তির জন্য বিভিন্ন ইমেল অ্যাপ্লিকেশন থেকে সামগ্রী ইউআরআইয়ের উদাহরণ রয়েছে :

জিমেইল -> content://com.google.android.gm.sapi/some_email@gmail.com/message_attachment_external/%23thread-a%3Ar332738858767305663/%23msg-a%3Ar-5439466788231005876/0.1?account_type=com.google&mimeType=application%2Foctet-stream&rendition=1

আউটলুক -> content://com.microsoft.office.outlook.fileprovider/outlookfile/data/data/com.microsoft.office.outlook/cache/file-download/file--2146063402/filename.customextention

স্যামসাং ইমেল অ্যাপ -> content://com.samsung.android.email.attachmentprovider/1/1/RAW

দেখতে পাবেন যে এগুলি সমস্ত আলাদা এবং আপনার আসল ফাইলের সাথে সম্পর্কিত কোনও নিশ্চয়তার নিশ্চয়তা নেই। সুতরাং, আপনি android:pathPatternসর্বাধিক পরামর্শ মতো পছন্দ করতে পারবেন না ।

ইমেল সংযুক্তির জন্য সমাধান প্রায় কাজ

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>

    <category android:name="android.intent.category.BROWSABLE"/>
    <category android:name="android.intent.category.DEFAULT"/>

    <data android:scheme="content"/>
    <data android:host="*"/>

    <!--  Required for Gmail and Samsung Email App  -->
    <data android:mimeType="application/octet-stream"/>

    <!--  Required for Outlook  -->
    <data android:mimeType="application/my-custom-extension"/>
</intent-filter>

পরীক্ষার মাধ্যমে আমি মাইম টাইপগুলি দেখতে পেলাম যে জিমেইল, আউটলুক, এবং স্যামসাং ইমেলগুলি সেগুলি আমার উদ্দেশ্য-ফিল্টারটিতে ব্যবহার করেছে এবং যুক্ত করেছে।

গুহাত / গোচা

  • আমি দেখতে পেয়েছি যে আমার উপরের সমাধানের সাহায্যে, আমি যদি বাইনারি ধরণের কোনও ফাইল খোলেন তবে এটি স্বয়ংক্রিয়ভাবে আমার অ্যাপ্লিকেশনটি চালু করবে। আমরা যদি ফাইলটি বিশ্লেষণ করতে না পারি তবে আমি একটি ব্যর্থ রাষ্ট্র প্রদর্শন করে এটি আমার কার্যকলাপে পরিচালনা করেছি this আমি অনুভব করেছি এটি একটি খুব বিরল ঘটনা তাই এটি গ্রহণযোগ্য হবে।

  • <data android:mimeType="*/*"/>আমার উদ্দেশ্য-ফিল্টারটি যুক্ত না করে ফাইল ব্রাউজারের মাধ্যমে আমার অ্যাপ্লিকেশন চালু করার কোনও উপায় আমি খুঁজে পাই না । আমি এটি ব্যবহার করতে পারিনি কারণ ব্যবহারকারী যখনই তাদের ফোনে কোনও ফাইল ক্লিক করেন তখন এটি আমার অ্যাপ্লিকেশনটি চালু করে (কেবলমাত্র কাস্টম-ফাইল-এক্সটেনশানগুলি নয়)। আমি এটি আপনার উদ্দেশ্য-ফিল্টারটিতে যুক্ত করার পরামর্শ দেব না।

সর্বশেষ ভাবনা

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

অনেক অনেক ধন্যবাদ, এটি কাজ করে, অ্যান্ড্রয়েড 7 থেকে 2020-এ পরীক্ষিত
হর্ষ

3

ব্রায়ানের উত্তর খুব কাছাকাছি, তবে আপনার নিজস্ব কাস্টম এক্সটেনশন (স্কিম বা হোস্টের প্রয়োজন নেই) দিয়ে কোনও ফাইল খোলার চেষ্টা করার সময় আপনার অ্যাপ্লিকেশনটি চালু করার জন্য এখানে একটি পরিষ্কার এবং ত্রুটি-মুক্ত উপায় রয়েছে:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:mimeType="*/*" />
    <data android:pathPattern="*.*\\.kdb" />
</intent-filter>

4
অ্যান্ড্রয়েড ডকুমেন্টেশনটিতে বলা হয়েছে যে কোনও স্কিম এবং হোস্ট সুনির্দিষ্টভাবে চিহ্নিত করা হলে প্যাথপ্যাটার অ্যাট্রিবিউটটি কেবল অর্থবোধক এবং আমি এটি যাচাই করেছি: developer.android.com/guide/topics/manifest/data-element.html
ব্রায়ান পেলিন

4
-1; এটি কোনও ফাইলের সাথে মিলবে ; ব্রায়ানের মন্তব্য সঠিক এবং মাইমটাইপ = " / " এর সামান্য পরিবর্তন সহ তার আসল উদাহরণটি নিখুঁত।
নিক

এই পোস্টটি যদি দীর্ঘকাল আগে থেকে থাকে তবে কোনও "/" ইনস্টল হয় না। আপনার "* / *" দরকার যা কোনও ফাইল টাইপের সাথে মেলে (নিশ্চিত নয়, আপনি যদি এটি বলতে চেয়েছিলেন)। সুতরাং আপনার প্রোগ্রামটি ভিডিও বা এমপি 3 খোলার জন্য বলা হতে পারে। আমি এর কোনও সমাধান এখনও পাইনি।
রেনে

আপনার <data>চারটি বৈশিষ্ট্যযুক্ত একটি ট্যাগ ব্যবহার করা উচিত । আপনার সমাধানটি অ্যান্ড্রয়েড 2 এর সাথে কাজ করতে পারে - তবে নিয়ম আরও কঠোর হয়ে উঠেছে: stackoverflow.com/questions/20650378/…
মার্টিন

অদ্ভুত পথপথার কী হবে ? এবং hostএবং schemeপ্রয়োজনীয়!
ইগোরগানাপলস্কি

3

অ্যান্ড্রয়েড 4 এ নিয়মগুলি আরও কড়া হয়ে ওঠে তবে তারা আগে থাকত। ব্যবহার:

    <data
      android:host=""
      android:mimeType="*/*"
      android:pathPattern=".*\\.ext"
      android:scheme="file"
    ></data>

3

আমি নিজেই একটি কাস্টম ফাইল এক্সটেনশনের জন্য এটির সাথে বেশ কিছুটা লড়াই করছি। অনেকগুলি অনুসন্ধানের পরে, আমি এই ওয়েব পৃষ্ঠাটি পেয়েছি যেখানে পোস্টারটি আবিষ্কার করেছিল যে অ্যান্ড্রয়েডের প্যাটার্নম্যাচার ক্লাসটি (যা ইনটেন্ট-ফিল্টারগুলিতে প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়) অপ্রত্যাশিত আচরণ করে যখন আপনার পাথটিতে অন্য কোথাও আপনার ম্যাচের প্যাটার্নের প্রথম অক্ষর রয়েছে when (যেমন আপনি যদি "* .xyz" এর সাথে মেলে চেষ্টা করছেন তবে প্যাটার্নম্যাচার ক্লাসটি যদি আপনার পথে "x" থাকে তবে থামবে)। তিনি কাজের জন্য যা খুঁজে পেয়েছিলেন তা এখানেই এবং আমার জন্য কাজ করেছেন, যদিও এটি সামান্য কিছু হ্যাক:

প্যাটার্নম্যাচারটি ইনটেন্টফিল্টারে প্যাটার্ন প্যাটার্নের জন্য ব্যবহৃত হয় তবে প্যাটার্নম্যাচারের অ্যালগোরিদমটি আমার কাছে বেশ অদ্ভুত। এখানে অ্যান্ড্রয়েড প্যাটার্নম্যাচারের অ্যালগরিদম।

স্ট্রিংয়ের মাঝখানে যদি 'পরবর্তী অক্ষর' থাকে তবে প্যাটার্নম্যাচার সেই সময়ে লুপ থামিয়ে দেয়। (অ্যান্ড্রয়েড কাঠামোর প্যাটার্নম্যাচার.জভা দেখুন))

প্রাক্তন স্ট্রিং: "এটি আমার সংযুক্তি" প্যাটার্ন: "। অ্যাটাক "। অ্যান্ড্রয়েড প্যাটার্নম্যাচার 'ম্যাচ করতে লুপ প্রবেশ করুন'। 'প্যাটার্ন পরবর্তী প্যাটার্নের চরিত্রটি না পাওয়া পর্যন্ত প্যাটার্ন (এই উদাহরণে,' এ ') সুতরাং,'। 'ম্যাচিং লুপটি সূচক 8-এ থামে -' এ 'এর মধ্যে' হ'ল 'এবং' আমার '। সুতরাং এই ম্যাচের ফলাফল 'মিথ্যা' প্রত্যাবর্তন করে।

বেশ আশ্চর্য, তাই না। এটি কার্যকর করার জন্য - সম্ভবত সম্ভাবনা হ্রাস করুন - বিকাশকারীকে বিরক্তিকর বোকা পাথপ্যাটার্ন ব্যবহার করা উচিত।

প্রাক্তন লক্ষ্য: 'বার্তা' অন্তর্ভুক্ত ইউরি পাথের সাথে মিল।

<intent-filter>
...
<data android:pathPattern=".*message.*" />
<data android:pathPattern=".*m.*message.*" />
<data android:pathPattern=".*m.*m.*message.*" />
<data android:pathPattern=".*m.*m.*m.*message.*" />
<data android:pathPattern=".*m.*m.*m.*m.*message.*" />
...
</intent-filter>

কাস্টম ফাইল এক্সটেনশনের সাথে মিলে গেলে এটি বিশেষত জারি করা হয়।


কেউ আগ্রহী, একটি বিতর্কিত লগ করা হয়েছে code.google.com
বেঞ্জামিন ডেভিস

3

উপরের কোনওটি সঠিকভাবে কাজ করে না, ভিউ বা SEND ক্রিয়াকলাপের জন্য, যদি প্রত্যয়টি অ্যান্ড্রয়েডের সিস্টেম = বিস্তৃত মাইএম ডাটাবেসে কোনও মাইম টাইম দিয়ে নিবন্ধিত না হয়। কেবলমাত্র সেটিংসে আমি খুঁজে পেয়েছি যে নির্দিষ্ট প্রত্যয়টির জন্য আগুন অন্তর্ভুক্ত রয়েছে android:mimeType="*/*", তবে তারপরে অ্যাকশন সমস্ত ফাইলগুলিতে আগুন ধরিয়ে দেয়। স্পষ্টতই আপনি যা চান তা নয়!

অ্যান্ড্রয়েড মাইম ডাটাবেসে মাইম এবং প্রত্যয় যুক্ত না করে আমি কোনও সঠিক সমাধান খুঁজে পাচ্ছি না, এখন পর্যন্ত আমি এটি করার কোনও উপায় খুঁজে পাইনি। যদি কেউ জানেন, একটি পয়েন্টার ভয়ঙ্কর হবে।


2

যখন কোনও উদ্দেশ্য কোনওটির সাথে মিলিত হয় intent-filter, তখন এগুলি intent-filterপ্রয়োজনীয়তা: (একটি চেকলিস্টের কল্পনা করুন)।

  • কোন মিল <action>
  • কোন মিল <category>
  • যেকোন মিল <data mimeType>(সহজ সমাধান: " / ")
  • Ptionচ্ছিকভাবে:

    • যেকোন মিল <data scheme>(সহজ সমাধান <data android:scheme="file" /> <data android:scheme="content" />:)

    • যেকোন মিল <data host>(সহজ সমাধান: "*")

    • যেকোন মিল <data pathPattern/etc.>(উদাহরণস্বরূপ .*\\.0cc)

একাধিক <data $type="">উপাদান নির্ধারণ করে $ টাইপ বক্সটি চেক করে যদি কোনওটির সাথে <data $type=>মেলেIntent

মাইমটাইপ ছাড়াই আপনার ভাঙবে intent-filter, যদিও এটি আপাতদৃষ্টিতে অপ্রয়োজনীয়। বাদ দেওয়া <data scheme/host/pathPattern>আপনার ফিল্টারটির সাথে সমস্ত কিছু মেলে match

https://f-droid.org/en/packages/de.k3b.android.intentintercep/ একটি অ্যাপ্লিকেশন যা সমস্ত অভিপ্রায় গ্রহণ করার জন্য ডিজাইন করা হয়েছে এবং আপনাকে উদ্দেশ্যটি পরিদর্শন করার অনুমতি দেয়। আমি শিখেছি যে সিম্পল ফাইল ম্যানেজারের মাধ্যমে খোলা অপরিজ্ঞাত ফাইল এক্সটেনশনগুলি এমআইএমআই টাইপের সাথে সরবরাহ করা হয় application/octet-stream

https://stackoverflow.com/a/4621284/2683842 প্রতিবেদন করে যে এটি দেখে <data pathPattern=> .*xyzপ্রথমে পরিত্যক্ত হয় xএবং তা অনুসরণ না করলে অবিলম্বে ব্যর্থ হবে yz। আপনি পরিবর্তে চেষ্টা /sdcard/.hidden/foo.0ccনা করা সুতরাং পাস করবে না ।.*\\.0cc.*\\..*\\.0cc

  • এই কাজটি প্রয়োজনীয় কিনা তা আমি যাচাই করিনি।

শেষ ফলাফল:

<activity android:name=".Ft2NsfActivity">

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="file" />
        <data android:scheme="content" />
        <data android:host="*" />
        <data android:pathPattern=".*\\.ftm"/>
        <data android:pathPattern=".*\\..*\\.ftm"/>
        <data android:pathPattern=".*\\..*\\..*\\.ftm"/>
        <data android:pathPattern=".*\\..*\\..*\\..*\\.ftm"/>
        <data android:pathPattern=".*\\.0cc"/>
        <data android:pathPattern=".*\\..*\\.0cc"/>
        <data android:pathPattern=".*\\..*\\..*\\.0cc"/>
        <data android:pathPattern=".*\\..*\\..*\\..*\\.0cc"/>
        <data android:mimeType="*/*" />
    </intent-filter>

</activity>

1

আপনি যদি জিমেইল, ড্রপবক্স বা বিল্টিন অ্যান্ড্রয়েড ফাইল সরঞ্জামগুলির মধ্যে সরাসরি ফাইলগুলি খুলতে চান তবে নীচের কোডটি ব্যবহার করুন ('অ্যান্ড্রয়েড মুছুন: হোস্ট = "*" "যা ফাইলকে জিমেইলের জন্য অ্যাক্সেসযোগ্য করে তুলেছে):

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:scheme="content" android:pathPattern=".*\\.kdb" 
          android:mimeType="application/octet-stream"/>


</intent-filter>

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:scheme="file" android:mimeType="*/*"     
          android:pathPattern=".*\\.kdb"/>
</intent-filter>

অ্যান্ড্রয়েড সংস্করণ 4.x অনুযায়ী ডেটা ফিল্টার অবশ্যই একটি বিবৃতিতে লিখতে হবে


অ্যান্ড্রয়েড ব্রাউজারটি ডাউনলোড-ও-ওপেন সঠিকভাবে কাজ করার জন্য আমি চেষ্টা করে যাচ্ছি। আপনার সমাধান অ্যান্ড্রয়েড নেটিভ ব্রাউজার এবং অ্যান্ড্রয়েড ক্রোমের জন্য ভাল কাজ করে তবে অ্যান্ড্রয়েড ফায়ারফক্স এখনও আমার ফাইলটি একটি পাঠ্য উইন্ডোতে খুলতে পারে বলে মনে হচ্ছে। এটি একটি কাস্টম মাইম প্রকার এবং কাস্টম এক্সটেনশন। পূর্বে কেবল এক্সটেনশনের সাহায্যে এটি কেবল ফায়ারফক্সে কাজ করেছিল। এখন এটি ফায়ারফক্স (জিমেইল সহ) বাদে সর্বত্র কাজ করে। আমি এখনও এটি পরীক্ষা করছি তবে আমি কেবল এই সত্যটি পতাকাঙ্কিত করতে চেয়েছিলাম যে এখানে ক্রস ব্রাউজার সংক্রান্ত একটি নতুন সেট রয়েছে।
ড্যামন স্মিথ

1

ব্রাউজার, জিমেইল এবং ফাইল ব্রাউজার থেকে খোলার জন্য নীচের মতো ফিল্টারটি ব্যবহার করে (পরীক্ষিত)। দ্রষ্টব্য: দয়া করে দুটি ফিল্টার একত্রীকরণ করবেন না, এটি ব্রাউজারটিকে আপনার অ্যাপ্লিকেশনটিকে উপেক্ষা করবে (পরীক্ষিত)।

        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>

            <data android:scheme="file" android:pathPattern=".*\\.ext" android:mimeType="application/*"/>
            <data android:scheme="content" android:pathPattern=".*\\.ext" android:mimeType="application/*"/>
        </intent-filter>

        <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="http"
                  android:host="*"
                  android:pathPattern=".*\\.ext" />
            <data android:scheme="https"
                  android:host="*"
                  android:pathPattern=".*\\.ext" />
            <data android:scheme="ftp"
                  android:host="*"
                  android:pathPattern=".*\\.ext" />

        </intent-filter>

আপনি কি এই উত্তরটি Gmail সংযুক্তি দিয়ে পরীক্ষা করেছেন?
ইগোরগানাপলস্কি

0

এই https://developer.android.com/training/sharing/reasing পড়ুন , এটি শুরু করতে সহায়তা করতে পারে। তারপরে ম্যানিফেস্ট ফাইলটিতে ক্রিয়াকলাপটি খোলার জন্য নিবন্ধভুক্ত করার সময় নীচের উদ্দেশ্য ফিল্টারটি চেষ্টা করুন

<intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="content"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="application/your_extension" />
</intent-filter>

"" ছাড়াই এক্সটেনশন সরবরাহ করা হয়েছে তা নিশ্চিত করুন । এটা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.