View Full Version : اجراي نوتيفيكيشن در اندرويد 6
reza_web
دوشنبه 04 بهمن 1395, 13:07 عصر
سلام
برنامه من برروي اندرويد 6 در اجراي نوتيفيكيشن ايراد دارد ولي در ساير اندرويدها درست اجرا مي شود
جستجو كردم و به اين رسيدم:
http://stackoverflow.com/questions/36226469/notification-not-working-on-api-23
ولي متاسفانه بازهم كار نكرد
كسي ميتونه كمك كنه؟
reza_web
سه شنبه 05 بهمن 1395, 11:38 صبح
كسي نميتونه راهنمايي كنه؟
reza_web
شنبه 09 بهمن 1395, 10:18 صبح
من مي خواهم هر يك دقيقه يكبار برنامه چيزي را بررسي كنه و درصورت تاييد يه نوتيفيكيشن اجرا بشه حتي اگه برنامه درحال اجرا نباشه
در مانيفست اينو نوشتم:
<receiver android:name=".MyNotification" ></receiver>
<receiver
android:name=".MyNotification$OnBootReceiver"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service android:name=".MyNotification$MyService" >
</service>
در اكتيويتي اصلي برنامه هم يه AlarmManager ساختم
public class AlarmController {
private Context m_Context;
private AlarmManager mgr;
private static final long PERIOD = 60000 ; //one min
public AlarmController(Context context){
m_Context = context;
mgr = (AlarmManager)m_Context.getSystemService(Context.A LARM_SERVICE);
}
public void StartAlarm(){
StopAlarm();
Intent i = new Intent(m_Context, MyNotification.class);
PendingIntent pi=PendingIntent.getBroadcast(m_Context, 0,i, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= 23)
mgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAK EUP, PERIOD, pi);
else if (Build.VERSION.SDK_INT >= 19)
mgr.setExact(AlarmManager.RTC_WAKEUP,PERIOD, pi);
else if (Build.VERSION.SDK_INT >= 16)
mgr.setRepeating(AlarmManager.RTC_WAKEUP,SystemClo ck.elapsedRealtime(),PERIOD,pi);
}
public void StopAlarm(){
Intent i = new Intent(m_Context, MyNotification.class);
PendingIntent pi=PendingIntent.getBroadcast(m_Context, 0,i, PendingIntent.FLAG_UPDATE_CURRENT);
mgr.cancel(pi);
}
}
سرويس MyNotification را هم ساختم
براي اندرويد كمتر از 6 درست كار ميكنه ولي براي اندرويد 6 اصلا كار نميكنه
اين را هم در گوگل پيدا كردم:
http://stackoverflow.com/questions/33036523/broadcast-receivers-not-working-in-android-6-0-marshmallow
ولي دقيقا نميدونم بايد كجا استفاده كنم
كسي هست كمك كنه؟
rezaricky
شنبه 09 بهمن 1395, 11:35 صبح
سلام. لطفا کدت رو با فرمت دست بفرست که بشه خوند.
در حالت کلی این مشکل میتونه از 2 تا بخش باشه
1- پرمیشن ها در اندروید 6 بصورت run time هست و فقط تعریف اون در مانیفست کافی نیست.
برای اینکه ببینید مشکل از این قسمت هست یا نه برو تو setting توی لیست برنامه ها برنامه ات رو پیدا کن و از قسمت پرمیشن (مجوز) هر کدوم غیر فعال بود فعالش کن.
2- اگه گزینه اول جواب نداد یکبار بجای BroadcastReceiver از WakeFulBroadcastReceiver استفاده کن.
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html
http://stackoverflow.com/questions/4459058/alarm-manager-example
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.