অ্যান্ড্রয়েড ব্রাউজার থেকে আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি কীভাবে চালু করবেন সে সম্পর্কে কেউ দয়া করে আমাকে গাইড করতে পারেন?
অ্যান্ড্রয়েড ব্রাউজার থেকে আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি কীভাবে চালু করবেন সে সম্পর্কে কেউ দয়া করে আমাকে গাইড করতে পারেন?
উত্তর:
<intent-filter>
একটি <data>
উপাদান সঙ্গে একটি ব্যবহার করুন । উদাহরণস্বরূপ, টুইটার.কমের সমস্ত লিঙ্কগুলি পরিচালনা করতে আপনি <activity>
এটি আপনার ভিতরে রাখবেন AndroidManifest.xml
:
<intent-filter>
<data android:scheme="http" android:host="twitter.com"/>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
তারপরে, ব্যবহারকারী যখন ব্রাউজারে টুইটারের জন্য একটি লিঙ্কে ক্লিক করেন, তাদের ক্রিয়াটি সম্পূর্ণ করতে কোন অ্যাপ্লিকেশনটি ব্যবহার করতে হবে তা জিজ্ঞাসা করা হবে: ব্রাউজার বা আপনার অ্যাপ্লিকেশন।
অবশ্যই, আপনি যদি নিজের ওয়েবসাইট এবং আপনার অ্যাপ্লিকেশনগুলির মধ্যে দৃ tight় সংহতকরণ সরবরাহ করতে চান তবে আপনি নিজের স্কিমটি সংজ্ঞায়িত করতে পারেন:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
তারপরে, আপনার ওয়েব অ্যাপে আপনি লিঙ্কগুলি এর মতো রাখতে পারেন:
<a href="my.special.scheme://other/parameters/here">
এবং ব্যবহারকারী যখন এটি ক্লিক করে, আপনার অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে চালু হবে (কারণ সম্ভবত এটিই একমাত্র my.special.scheme://
ইউরিস ধরণের হ্যান্ডেল করতে পারে )। এর একমাত্র ক্ষতিটি হ'ল যদি ব্যবহারকারী অ্যাপটি ইনস্টল না করে থাকে তবে তারা একটি বাজে ত্রুটি পাবে। এবং আমি নিশ্চিত যে চেক করার কোনও উপায় আছে।
সম্পাদনা করুন: আপনার প্রশ্নের উত্তর দেওয়ার জন্য, আপনি ব্যবহার করতে পারেন getIntent().getData()
যা কোন Uri
অবজেক্টকে ফেরত দেয় । এরপরে Uri.*
আপনার প্রয়োজনীয় ডেটা উত্তোলনের জন্য আপনি পদ্ধতিগুলি ব্যবহার করতে পারেন । উদাহরণস্বরূপ, আসুন যাক ব্যবহারকারী এই লিঙ্কটিতে ক্লিক করেছেন http://twitter.com/status/1234
:
Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"
আপনি উপরের যে কোনও জায়গায় করতে পারেন Activity
, তবে আপনি সম্ভবত এটি করতে চাইবেন onCreate()
। এছাড়াও আপনি params.size()
পাথের অংশগুলির সংখ্যা পেতে ব্যবহার করতে পারেন Uri
। জাভাডোক বা অ্যান্ড্রয়েড বিকাশকারী ওয়েবসাইটটি Uri
সুনির্দিষ্ট অংশগুলি নিষ্কাশনের জন্য ব্যবহার করতে পারেন এমন অন্যান্য পদ্ধতির জন্য সন্ধান করুন ।
android:exported="true"
তাদের Activity
প্রকাশ্যে যুক্ত করতে হবে । এই উত্তরটি দেখুন stackoverflow.com/a/13044911/1276636
উপরের সমস্ত উত্তর আমার CHROME
কাছে ২৮ জানুয়ারী ২০১৪ তে কাজ করে নি
আমার অ্যাপ্লিকেশনটি হ্যাঙ্গআউটস, জিমেইল ইত্যাদির মতো অ্যাপ্লিকেশনগুলির থেকে http://example.com/someresource/ লিঙ্ক থেকে সঠিকভাবে চালু হয়েছে তবে ক্রোম ব্রাউজারের মধ্যে নয়।
এটি সমাধান করার জন্য, যাতে এটি ক্রোম থেকে সঠিকভাবে আরম্ভ হয় আপনাকে এ জাতীয় উদ্দেশ্য ফিল্টার সেট করতে হবে
<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:host="example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
<data
android:host="www.example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
</intent-filter>
pathPrefix
উপাদান নোট করুন
আপনার অ্যাপ্লিকেশনটি যখনই ক্রোম ব্রাউজার থেকে গুগল অনুসন্ধান ফলাফল বা অন্য কোনও ওয়েবসাইটের লিঙ্কে ক্লিক করে http://example.com/someresource/ প্যাটার্নের জন্য আবেদন করবে তখন আপনার ক্রিয়াকলাপের পিসির অভ্যন্তরে উপস্থিত হবে
দয়া করে এখানে আমার মন্তব্য দেখুন: অ্যান্ড্রয়েড ব্রাউজারে একটি লিঙ্ক তৈরি করুন আমার অ্যাপ্লিকেশন শুরু করুন?
আমরা লোকেরা তাদের নিজস্ব স্কিম ব্যবহার করা দৃ strongly়ভাবে নিরুৎসাহিত করি, যদি না তারা একটি নতুন বিশ্বব্যাপী ইন্টারনেট স্কিম সংজ্ঞায়িত করে।
আমার ক্ষেত্রে আমাকে দুটি বিভাগ নির্ধারণ করতে হয়েছিল <intent-filter>
এবং তারপরে এটি কার্যকর হয়েছিল:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
উদাহরণস্বরূপ, আপনার পরবর্তী জিনিসগুলি রয়েছে:
আপনার অ্যাপ্লিকেশনটি খোলার জন্য একটি লিঙ্ক: http://example.com
আপনার অ্যাপ্লিকেশনটির প্যাকেজের নাম: com.example.mypackage
তারপরে আপনাকে পরবর্তী কাজটি করতে হবে:
1) আপনার ক্রিয়াকলাপে একটি উদ্দেশ্য ফিল্টার যুক্ত করুন (আপনি যে কোনও ক্রিয়াকলাপ হতে পারেন more আরও তথ্যের জন্য ডকুমেন্টেশন চেক করুন )।
<activity
android:name=".MainActivity">
<intent-filter android:label="@string/filter_title_view_app_from_web">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "http://example.com" -->
<data
android:host="example.com"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2) লিঙ্কটি পরীক্ষা করতে বা এই পদ্ধতিগুলি ব্যবহার করতে একটি HTML ফাইল তৈরি করুন ।
<a href="intent://example.com#Intent;scheme=http;package=com.example.mypackage;end">Open your Activity directly (just open your Activity, without a choosing dialog). </a>
<a href="http://example.com">Open this link with browser or your programm (by choosing dialog).</a>
3) পরীক্ষা করতে মোবাইল ক্রোম ব্যবহার করুন
4) এটা।
এবং গভীর লিঙ্কিং পরীক্ষা করার জন্য বাজারে অ্যাপ্লিকেশন প্রকাশ করা প্রয়োজন নয় =)
এছাড়াও, আরও তথ্যের জন্য ডকুমেন্টেশন এবং দরকারী উপস্থাপনা চেক করুন ।
<category android:name="android.intent.category.BROWSABLE"/>
লিঙ্কটি থেকে ক্রিয়াকলাপটি সঠিকভাবে স্বীকৃত করতে অভিপ্রায় ফিল্টারে যুক্ত করা উচিত ।
নিম্নলিখিত লিঙ্কটি ব্রাউজার থেকে সরাসরি অ্যাপ্লিকেশন চালু করার (যদি ইনস্টল করা থাকে) তথ্য দেয়। অন্যথায় এটি সরাসরি প্লে স্টোরটিতে অ্যাপ্লিকেশনটি খোলায় যাতে ব্যবহারকারী নির্বিঘ্নে ডাউনলোড করতে পারে।
আপনি যখন এই বৈশিষ্ট্যটি প্রয়োগ করেন তখন আপনার আইকনটি অ্যান্ড্রয়েড লঞ্চার থেকে অদৃশ্য হয়ে যায় কিনা তা লক্ষ্য করুন, আপনার অভিপ্রায়-ফিল্টারটি বিভক্ত করার চেয়ে।
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</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="your-own-uri" />
</intent-filter>
</activity>
হ্যাঁ, ক্রোম স্কিম অনুসন্ধান করার পরিবর্তে অনুসন্ধান করে। আপনি যদি ইউআরআই স্কিমের মাধ্যমে আপনার অ্যাপ্লিকেশন চালু করতে চান তবে প্লে স্টোরটিতে এই দুর্দান্ত ইউটিলিটি অ্যাপটি ব্যবহার করুন। এটি আমার দিনটি রক্ষা করেছে :) https://play.google.com/store/apps/details?id=com.naosim.urlschemesender
জেলমারিন বন্দর ফেলিক্স এর উত্তর
আপনার মধ্যে এটি MainActivity
যুক্ত করুন ( দস্তাবেজগুলি: অ্যান্ড্রয়েড.অ্যাপ.আইন্টফিল্টারঅ্যাট্রিবিউট ক্লাস ):
....
[IntentFilter(new[] {
Intent.ActionView },
Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
DataScheme = "my.special.scheme")
]
public class MainActivity : Activity
{
....
জামারিন আপনার AndroidManifest.xml
জন্য নিম্নলিখিতগুলিতে যুক্ত করবে:
<activity
android:label="Something"
android:screenOrientation="portrait"
android:theme="@style/MyTheme"
android:name="blah.MainActivity">
<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="my.special.scheme" />
</intent-filter>
</activity>
এবং প্যারামগুলি পাওয়ার জন্য ( আমি মেইনএকটিভিটির অনক্রেটটিতে পরীক্ষা করেছি ):
var data = Intent.Data;
if (data != null)
{
var scheme = data.Scheme;
var host = data.Host;
var args = data.PathSegments;
if (args.Count > 0)
{
var first = args[0];
var second = args[1];
...
}
}
আমি যতদূর জানি, উপরেরগুলিকে কেবল মূল ক্রিয়াকলাপই নয়, কোনও কার্যকলাপে যুক্ত করা যেতে পারে
মন্তব্য:
OnCreate
অ্যাপ্লিকেশনটির ইভেন্টটি MainLauncher Activity
আবার বরখাস্ত করা হবে।<a href="my.special.scheme://host/arg1/arg2">
উপরের শেষ কোডটিতে স্নিপেট মানগুলি হবে:scheme: my.special.scheme
host: host
args: ["arg1", "arg2"]
first: arg1
second: arg2
আপডেট: অ্যান্ড্রয়েড যদি আপনার অ্যাপ্লিকেশনটির নতুন উদাহরণ তৈরি করে তবে android:launchMode="singleTask"
আপনারও যুক্ত করা উচিত ।
গভীর লিঙ্কগুলি পরিচালনা করতে ফেলিক্সের দৃষ্টিভঙ্গি হ'ল গভীর লিঙ্কগুলি পরিচালনা করার জন্য আদর্শ পদ্ধতি। আপনার গভীর লিঙ্কগুলির রাউটিং এবং পার্সিং পরিচালনা করতে আমি এই লাইব্রেরিটি চেক আউট করার পরামর্শ দিচ্ছি:
https://github.com/airbnb/DeepLinkDispatch
আপনি কোনও নির্দিষ্ট গভীর লিঙ্ক ইউআরআই-এর জন্য আপনার ক্রিয়াকলাপটি নিবন্ধকরণ করতে টীকাগুলি ব্যবহার করতে পারেন এবং এটি আপনার জন্য পরামিতিগুলি বের করে দেবে পাথ খণ্ডগুলি পাওয়া, এটির সাথে মিলে যাওয়া ইত্যাদি rig :
@DeepLink("somePath/{someParameter1}/{someParameter2}")
public class MainActivity extends Activity {
...
}
আরে আমি সমাধান পেয়েছি। আমি "ডিফল্ট" হিসাবে বিভাগটি সেট করি নি। এছাড়াও আমি ইনটেন্ট ডেটার জন্য প্রধান ক্রিয়াকলাপটি ব্যবহার করছিলাম। এখন আমি ইনটেন্ট ডেটার জন্য একটি আলাদা কার্যকলাপ ব্যবহার করছি। সাহায্যের জন্য ধন্যবাদ. :)
আপনাকে CALLBACK_URL 'অ্যাপ্লিকেশন: //' এ ছদ্ম-হোস্টনাম যুক্ত করা দরকার ইউআরএল হিসাবে বোঝায় না এবং পার্স করা যায় না।
example.php:
<?php
if(!isset($_GET['app_link'])){ ?>
<iframe src="example.php?app_link=YourApp://blabla" style="display:none;" scrolling="no" frameborder="0"></iframe>
<iframe src="example.php?full_link=http://play.google.com/xyz" style="display:none;" scrolling="no" frameborder="0"></iframe>
<?php
}
else { ?>
<script type="text/javascript">
self.window.location = '<?php echo $_GET['app_link'];?>';
window.parent.location.href = '<?php echo $_GET['full_link'];?>';
</script>
<?php
}
এখানে @ জে রুনস এর উত্তর দেখুন । আপনার কাস্টম স্কিমটি দিয়ে এইচটিএমএল তৈরি করা এবং এটি কোথাও আপলোড করার ধারণা। তারপরে আপনি যদি এইচটিএমএল-ফাইলে আপনার কাস্টম লিঙ্কটিতে ক্লিক করেন তবে আপনাকে আপনার অ্যাপে পুনঃনির্দেশিত করা হবে। আমি এই নিবন্ধটি অ্যান্ড্রয়েডের জন্য ব্যবহার করেছি । তবে Name = "MyApp.Mobile.Droid.MainActivity"
আপনার টার্গেট ক্রিয়াকলাপে পুরো নামের বৈশিষ্ট্যটি সেট করতে ভুলবেন না forget
15/06/2019 হিসাবে
আমি যা করেছি তা হ'ল ইউআরএল খোলার চারটি সম্ভাবনা অন্তর্ভুক্ত।
অর্থাত্, এবং http
/ https
এবং www
উপসর্গ সহ 2 এবং 2 ছাড়াইwww
এবং এটি ব্যবহার করে আমার অ্যাপ্লিকেশনটি আমাকে কোনও ব্রাউজার এবং অন্যান্য বিকল্প চয়ন করতে বলার ছাড়াই এখন স্বয়ংক্রিয়ভাবে চালু হয়।
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="example.in" />
<data android:scheme="https" android:host="www.example.in" />
<data android:scheme="http" android:host="example.in" />
<data android:scheme="http" android:host="www.example.in" />
</intent-filter>