View Full Version : اجراي نوتيفيكيشن در اندرويد 6
  
reza_web
دوشنبه 04 بهمن 1395, 14:07 عصر
سلام
برنامه من برروي اندرويد 6 در اجراي نوتيفيكيشن ايراد دارد ولي  در ساير اندرويدها درست اجرا مي شود 
جستجو كردم و به اين رسيدم:
http://stackoverflow.com/questions/36226469/notification-not-working-on-api-23
ولي متاسفانه بازهم كار نكرد
كسي ميتونه كمك كنه؟
reza_web
سه شنبه 05 بهمن 1395, 12:38 عصر
كسي نميتونه راهنمايي كنه؟
reza_web
شنبه 09 بهمن 1395, 11: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, 12: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.