بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در BroadcastReceiver (فوری)

مدیریت گفتگو
Neshat 6 سال پیش
آخرین تغییر: 6 سال پیش

سلام دوستان من مشغول ساخت یه نرم افزارم که میخوام بلافاصله بعد از روشن شدن گوشی به اکتیویتی مورد نظر من بره اما با کد هایی که تا حالا استفاده کردم حدود یک 20ثانیه یا بیشتر طول میکشه تا اینکارو بکنه لطفا کمک کنید خیلی ضروریه

نظرات

Neshat 6 سال پیش
دوستان یه جورایی مشکل فهمیدم مشکل اینه که گوشی باید تمام اطلاعات دریافت کنه بعد رسیور برنامه منو چک کنه اما میخوام بدونم روشی هست برنامه منو اولویت قرار بده؟

پاسخ‌ها 1

jbRhmNqb 6 سال پیش

فک میکنم باید با چند گوشی دیگه هم امتحان کنین چون تا جایی که اطلاع دارم این فقط یک راه داره و رسیورش هم یک چیز مشخص هست؛ احتمالا سرعت امولاتور پایین هست ولی رسیور و اینتنت فیلتر زیر رو هم چک کنین برای من که کار میکنه

 <receiver
            android:name="helper.BootCompleteReceiver"
            android:enabled="true" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </intent-filter>
</receiver>

 

 

 package helper;

import activity.ActivityNews;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.util.Log;


public class BootCompleteReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getExtras().containsKey("NEXT_ALARM")) {
            showNotification(context, intent.getExtras().getInt("ID"), intent.getExtras().getString("TITLE"), intent.getExtras().getString("MESSAGE"));
        } else {
            Log.i("LOG", "booted");
            // startActivity(context);
        }
    }


    private void startActivity(Context context) {
        Intent myIntent = new Intent(context, ActivityNews.class);
        myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(myIntent);
    }


    private void showNotification(Context context, int id, String title, String content) {
        PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(context, activity.ActivityStartup.class), 0);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context).setSmallIcon(android.R.drawable.btn_star).setContentTitle(title).setContentText(content);
        mBuilder.setContentIntent(contentIntent);
        mBuilder.setDefaults(Notification.DEFAULT_SOUND);
        mBuilder.setAutoCancel(true);
        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(id, mBuilder.build());
        G.setNextAlarm(context, id);
    }

}

نظرات

Neshat 6 سال پیش
ممنون بابت جواب ولی با گوشی های هواویmate8 و s8 انتحان کردم!

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .