অ্যান্ড্রয়েডে কীভাবে আমার নিজের নিজস্ব ইউআরআই স্কিমটি প্রয়োগ করা যায়


161

বলুন যে আমি একটি ইউআরআই যেমন সংজ্ঞা দিতে চাই:

myapp://path/to/what/i/want?d=This%20is%20a%20test

আমার নিজের অ্যাপ্লিকেশন, বা পরিষেবা দ্বারা অবশ্যই পরিচালনা করা উচিত। লক্ষ্য করুন যে স্কিমটি "myapp"এবং না "http", বা "ftp"। এটাই হ'ল আমার উদ্দেশ্য: অ্যান্ড্রয়েড ওএসের জন্য বিশ্বব্যাপী আমার নিজস্ব ইউআরআই স্কিমা সংজ্ঞায়িত করা। এটা কি সম্ভব?

এটি কিছু প্রোগ্রাম ইতিমধ্যে যা করেছে তার সাথে কিছুটা মিল। যেমন উইন্ডোজ সিস্টেমগুলি, যেমন স্কাইপ ( skype://) বা কোনও টরেন্ট ডাউনলোডার প্রোগ্রাম ( torrent://)।


উত্তর:


215

এটি খুব সম্ভব; আপনি <data>উপাদানটি ব্যবহার করে আপনার AndroidManLive.xML এ ইউআরআই স্কিমটি সংজ্ঞায়িত করেন । আপনি <data>উপাদানগুলি পূরণ করে একটি অভিপ্রায় ফিল্টার সেটআপ করুন এবং আপনি নিজের স্কিম তৈরি করতে সক্ষম হবেন। ( ইন্টেন্ট ফিল্টার এবং অভিপ্রায় রেজোলিউশনের বিষয়ে আরও এখানে ))

একটি সংক্ষিপ্ত উদাহরণ এখানে:

<activity android:name=".MyUriActivity">
    <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="myapp" android:host="path" />
    </intent-filter>
</activity>

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


11
"অ্যান্ড্রয়েড: পাথ" ভেরিয়েবলটিকে প্রোটোকলের পরে সবকিছু নির্দিষ্ট করতে হবে, এমন নির্দিষ্ট পথের সাথে লিঙ্ক করতে আমি কিছুটা সময় নিয়েছিলাম। এটি অবশ্যই "youtube.com/myvideo" ফর্মের হতে হবে
কেসব্যাশ

2
দুর্দান্ত কাজ করে তবে মাইউরিএকটিভিটি থেকে url এ প্রদত্ত জিইটি প্যারামিটার "ডি" এর মানটি কীভাবে পড়তে পারি?
টিমো

আমার জন্য কাজ করছে না একই ক্রিয়াকলাপের জন্য আমার একাধিক ইনটেন্ট ফিল্টার রয়েছে। প্রধান লঞ্চারের জন্য একটি। উপরের মতো একটি নির্দিষ্ট ফাইল তৃতীয় খোলার জন্য দ্বিতীয় প্রথম দুটি নিখুঁতভাবে কাজ করছে তবে তৃতীয় নয়।
মোহিতুম

আপনি কি দয়া করে এখানে প্রশ্নটি দেখতে পারেন stackoverflow.com/q/29116574/3828908
সালমান

1
উপরের লিঙ্কটির ইংরেজি ভাষার সংস্করণ যদি কারও প্রয়োজন হয়।
জেনসবারু

67

@ ড্যানিয়েল নতুন উত্তরটি পরিপূরক করা , প্যারামিটারগুলির মান পেতে আপনাকে এটি করতে হবে:

ইউআরআই উদাহরণ: myapp://path/to/what/i/want?keyOne=valueOne&keyTwo=valueTwo

আপনার ক্রিয়াকলাপে:

Intent intent = getIntent();
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
  Uri uri = intent.getData();
  String valueOne = uri.getQueryParameter("keyOne");
  String valueTwo = uri.getQueryParameter("keyTwo");
}

লিঙ্কটি ভালো লাগলে কী হবে http://www.host.com/directory/value? আমরা কীভাবে এটি পেতে পারি value?
বাগগুলি ঘটবে

3
কিছু মনে করবেন না, এখানে এসও উত্তর পেয়েছেন ।
বাগ

মেটা ডেটা ব্যবহার না করে কোডে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ডেটা ট্যাগগুলি কীভাবে পড়বেন। আমার প্রয়োজন ঠিক স্কিম, পাথ এবং হোস্টটি সার্ভারে ওওথ কলটিতে প্রেরণ করা। আমি কল বেক ঘোষণার সদৃশ করতে চাই না!
প্রদীপ চক্রবর্তী গুদিপতি

@ বাগশ্যাপেন এটি সর্বশেষ ইউআরআই পাথ অংশ gment ব্যবহারuri.getLastPathSegment();
মার্টিন

25

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

আপনি যদি কেবল নিজের অ্যাপের সাথে একটি লিঙ্ক রাখতে সক্ষম হতে চান তবে আমি আপনাকে এখানে বর্ণিত পদ্ধতির অনুসরণ করার পরামর্শ দিচ্ছি:

অ্যান্ড্রয়েড ওএসে ব্রাউজারে ইউআরএল কল করে আপনার প্রোগ্রাম অ্যাক্সেসের জন্য কীভাবে কিছু ইউআরএল নেমস্পেস (myapp: //app.start/) নিবন্ধন করবেন?


2
মাথা উঁচু করার জন্য ধন্যবাদ, তবে আমি কেবল বদ্ধ পরিবেশে, একটি ধারণা প্রমাণের চেষ্টা করার জন্য এটি ব্যবহার করব। যদি এই পরীক্ষাটি কখনও তার পরীক্ষার পর্যায়ে চলে যায়, আমি অবশ্যই পুরো চুক্তিকে অনুমোদনের বিষয়টি বিবেচনা করব।
পাণি

5
ঠিক আছে ... তবে কেন ঠিক কাজটি করা হচ্ছে না? এটি কোনও উল্লেখযোগ্য কাজ নয়।
হ্যাকবড

2
ইউটিউব @ হ্যাকবড যা পরামর্শ দিচ্ছে তা করুন, তবে ফেসবুক থেকে ইউটিউব লিঙ্কগুলি খুলতে ইউটিউব অ্যাপটি নয় ব্রাউজারটি খোলে। এই প্রক্রিয়াটি কি খুব "নাজুক"?
অ্যালিকেলিন-কিলাকা

19
আমি আমার নিজস্ব স্কিম সংজ্ঞায়নের দিকে ঝুঁকছি যাতে আমি আমার আইওএস অ্যাপ্লিকেশন বা আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি চালু করতে একই ওয়েব লজিকটি ব্যবহার করতে পারি। মাত্র আমার 2 সেন্ট
চিকোভিটস

1
@ হ্যাকবড আমার মনে হয় না যে তারা যখন আরএফসি লিখেছেন তখন তাদের মনে অ্যান্ড্রয়েড ছিল। যদিও আমি আপনার সাথে 100% রয়েছি যে কোনও নতুন স্কিম তৈরি করা প্রয়োজন নয় , আমি মনে করি কারণটি ঠিক এটি: এটি লক্ষ্য অর্জন করা এমনকি প্রয়োজনীয় নয়। এবং এখন .. যখন আপনি ফেসবুক, হোয়াটসঅ্যাপ বা অন্যান্য বড়, প্রতিষ্ঠিত প্রযুক্তি সরঞ্জামগুলির মতো হন - "নতুন ইউআরআই-স্কিম তৈরি করবেন না" - বিধিটি অবশ্য আপনার জন্য আর প্রযোজ্য নয়। আপনার নামটি ইতিমধ্যে বিশ্বব্যাপী কোনও সংস্থায় বাঁধা থাকলে স্কিমের নামের সাথে কোনও সংঘর্ষ হবে না।
আইসিয়েরাসর 21

6

ডিয়েগো-র অন্য বিকল্প পন্থাটি একটি লাইব্রেরি ব্যবহার করা:

https://github.com/airbnb/DeepLinkDispatch

আপনি যে ইউআরআই পরিচালনা করতে চান এবং আপনি ক্রিয়াকলাপে টীকাগুলির মাধ্যমে প্যারামিটারগুলি বের করতে চান তা সহজেই ঘোষণা করতে পারেন:

@DeepLink("path/to/what/i/want")
public class SomeActivity extends Activity {
  ...
}

প্লাস হিসাবে, ক্যোয়ারী প্যারামিটারগুলি ক্রিয়াকলাপের সাথেও পাশ করা হবে।


1

প্রশ্নটি যেমন বহু বছর আগে জিজ্ঞাসা করা হয়েছিল, এবং অ্যান্ড্রয়েড এই ইউআরআই স্কিমটিতে অনেকটা বিকশিত হয়েছে।
মূল ইউআরআই স্কিম থেকে গভীর লিঙ্ক এবং এখন অ্যান্ড্রয়েড অ্যাপ লিংক।

অ্যান্ড্রয়েড এখন আপনার নিজের ইউআরআই স্কিম সংজ্ঞায়িত না করে এইচটিটিপি ইউআরএল ব্যবহার করার পরামর্শ দেয়। কারণ অ্যান্ড্রয়েড অ্যাপ লিংকগুলি এমন একটি HTTP ইউআরএলগুলি ব্যবহার করে যা আপনার নিজের ওয়েবসাইট ডোমেনের সাথে লিঙ্ক করে, তাই অন্য কোনও অ্যাপ্লিকেশন আপনার লিঙ্কগুলি ব্যবহার করতে পারে না। আপনি গভীর লিঙ্ক এবং অ্যান্ড্রয়েড অ্যাপ লিঙ্কের তুলনা এখান থেকে পরীক্ষা করতে পারেন

এখন আপনি অ্যান্ড্রয়েড স্টুডিও বিকল্পটি ব্যবহার করে সহজেই একটি ইউআরআই স্কিম যুক্ত করতে পারেন: সরঞ্জামগুলি> অ্যাপ লিংক সহকারী। দয়া করে বিশদটি অ্যান্ড্রয়েড ডকুমেন্টের কাছে উল্লেখ করুন: https://developer.android.com/studio/write/app-link-indexing.html

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