0 امتیاز
قبل در برنامه نویسی توسط (0 امتیاز)
ویرایش شده قبل توسط

سلام دوستان آیا میشود یک برنامه بدون اکتیویتی نوشت که فقط یک برودکست در برنامه بصورت پس زمینه درحال اجرا باشد؟

با تشـــکر از دوستان

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)
ویرایش شده قبل توسط

از اندروید 3.1 تمام برنامه هایی که حداقل یک بار اجرا نشده اند، intent  ها را دریافت نمی کنند و BroadcastReceiver های آنها exclude می شود. پس شما حداقل نیاز به یک activity دارید که باهاش حداقل یکبار برنامه رو اجرا کنید. پس از بار اول می توانید BroadcastReceiver خود را برای دریافت intent مربوط به کامل شدن boot سیستم تنظیم کنید که در صورت reset شدن موبایل سرویس شما مجددا اجرا شود:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.javabyab.broadcastreceiver"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        <receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main"

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true" >
        </service>
    </application>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
</manifest>

BroadcastReceiver شما هم چیزی شبیه این می شود:

public class MyReceiver extends BroadcastReceiver {

    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("test-saeed","------------receive boot");
        // use this to start and trigger a service
        Intent i= new Intent(context, MyService.class);
        // potentially add data to the intent
        context.startService(i);

    }
}
قبل توسط (0 امتیاز)
خب نمیشه کاری کرد که Icon برنامه را در منو نمایش ندهد آیا روشی برای حل این مسئله هست؟
قبل توسط (1.1هزار امتیاز)
اگر بخواهید از منو حذف بشه اونوقت چطور می خواهید اجراش کنید؟ و اگه اجرا نشه BroadcastReceiver شما exclude می شود.
قبل توسط (0 امتیاز)
من میخوام که این برنامه با بوت شدن سیستم یک بار اجرا شود و بصورت پس زمینه در برنامه درحال اجرا باشد
قبل توسط (1.1هزار امتیاز)
شما به کدی که برات گذاشتم یک سرویس اضافه کنی همین کارو انجام میده. فقط میگید میخوام از منو حذف بشه که این کار با نیازمندی که شما دارید از اندروید 3.1 به بعد امکانپذیر نیست. لطفا جواب رو با دقت مطالعه کنید.

سوالات مشابه

0 امتیاز
2 پاسخ 951 بازدید
...