ডিভাইস বুটে কীভাবে পরিষেবা শুরু করবেন (অটোরান অ্যাপ্লিকেশন ইত্যাদি)
প্রথমটির জন্য: সংস্করণ অ্যান্ড্রয়েড ৩.১+ থেকে আপনি BOOT_COMPLETE পাবেন না যদি ব্যবহারকারী কমপক্ষে একবার আপনার অ্যাপ্লিকেশনটি শুরু না করেন বা ব্যবহারকারী "জোর করে বন্ধ" অ্যাপ্লিকেশন না করেন। ম্যালওয়ারটি স্বয়ংক্রিয়ভাবে নিবন্ধিত পরিষেবাটি রোধ করার জন্য এটি করা হয়েছিল। এই সুরক্ষা গর্তটি অ্যান্ড্রয়েডের নতুন সংস্করণগুলিতে বন্ধ ছিল।
সমাধান:
ক্রিয়াকলাপ সহ অ্যাপ্লিকেশন তৈরি করুন। ব্যবহারকারীরা একবার এটি চালালে অ্যাপ্লিকেশনটি BOOT_COMPLETE সম্প্রচার বার্তা গ্রহণ করতে পারে।
দ্বিতীয়টির জন্য: বাহ্যিক স্টোরেজ মাউন্ট করার আগে BOOT_COMPLETE প্রেরণ করা হয়। যদি অ্যাপটি বাহ্যিক স্টোরেজে ইনস্টল করা থাকে তবে এটি BOOT_COMPLETE সম্প্রচার বার্তাটি গ্রহণ করবে না।
এক্ষেত্রে দুটি সমাধান রয়েছে:
- অভ্যন্তরীণ সঞ্চয়স্থানে আপনার অ্যাপ্লিকেশনটি ইনস্টল করুন
- অভ্যন্তরীণ স্টোরেজে আরও একটি ছোট অ্যাপ ইনস্টল করুন। এই অ্যাপ্লিকেশনটি BOOT_COMPLETE গ্রহণ করে এবং বাহ্যিক স্টোরেজে দ্বিতীয় অ্যাপ চালায়।
যদি আপনার অ্যাপ্লিকেশনটি ইতিমধ্যে অভ্যন্তরীণ স্টোরেজে ইনস্টল করা থাকে তবে নীচের কোডটি কীভাবে ডিভাইস বুটে পরিষেবা শুরু করবেন তা বুঝতে সহায়তা করতে পারে।
ম্যানিফেস্ট.এক্সএমএলে
অনুমতি:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
আপনার BOOT_COMPLETED রিসিভার নিবন্ধন করুন:
<receiver android:name="org.yourapp.OnBoot">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
আপনার পরিষেবা নিবন্ধন করুন:
<service android:name="org.yourapp.YourCoolService" />
রিসিভার অনবুট.জভাতে:
public class OnBoot extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
// Create Intent
Intent serviceIntent = new Intent(context, YourCoolService.class);
// Start service
context.startService(serviceIntent);
}
}
এইচটিসির জন্য আপনার সম্ভবত এই কোডটি ম্যানিফেস্টে যুক্ত করতে হবে যদি ডিভাইসটি RECEIVE_BOOT_COMPLETED না ধরে:
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
রিসিভার এখন এই মত চেহারা:
<receiver android:name="org.yourapp.OnBoot">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
পুনরায় চালু এমুলেটর বা আসল ডিভাইস ছাড়াই BOOT_COMPLETED কীভাবে পরীক্ষা করবেন? এটি সহজ. এটা চেষ্টা কর:
adb -s device-or-emulator-id shell am broadcast -a android.intent.action.BOOT_COMPLETED
কীভাবে ডিভাইস আইডি পাবেন? আইডির সাথে সংযুক্ত ডিভাইসের তালিকা পান:
adb devices
ডিফল্টরূপে ADT এডিবি আপনি দেখতে পাবেন:
adt-installation-dir/sdk/platform-tools
উপভোগ করুন! )