اذهب إلى المحتوى

kaka2020

الأعضاء
  • المساهمات

    3
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة kaka2020

  1. بتاريخ On 6/16/2016 at 17:09 قال هشام رزق الله:

    توجد عدة طرق لفعل ذلك، لكن أعتقد أن أسهل طريقة هي عن طريق استخدام أصناف  AlarmManager وBroadcastReceiver في البرمجة.

    بعد إنشاء مشروع جديد سنضيف هذه الشيفرات البرمجية إلى MainActivity.java، قم بتعديل وقت وتاريخ عرض الاشعار كما تريد:

    
    package com.example;
     
    import java.util.Calendar;
    import android.app.Activity;
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.os.Bundle;
     
    public class MainActivity extends Activity 
    {
     
        private PendingIntent pendingIntent;
         
        @Override
        public void onCreate(Bundle savedInstanceState) 
         {
           
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
         
          Calendar calendar = Calendar.getInstance();
         
          calendar.set(Calendar.MONTH, 6);
          calendar.set(Calendar.YEAR, 2013);
          calendar.set(Calendar.DAY_OF_MONTH, 13);
     
          calendar.set(Calendar.HOUR_OF_DAY, 20);
          calendar.set(Calendar.MINUTE, 48);
          calendar.set(Calendar.SECOND, 0);
          calendar.set(Calendar.AM_PM,Calendar.PM);
         
          Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
          pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
         
          AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
          alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
        
        } //end onCreate
    }

    سنحتاج أيضا إلى إنشاء BroadcastReceiver باسم MyReceiver.java وسيحتوي على الشيفرة البرمجية التالية:

    
    package com.example;
     
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
     
    public class MyReceiver extends BroadcastReceiver
    {
          
        @Override
        public void onReceive(Context context, Intent intent)
        {
           Intent service1 = new Intent(context, MyAlarmService.class);
           context.startService(service1);
            
        }   
    }

    بعد ذلك سنحتاج إلى إنشاء "خدمة" Service حيث سنضمن اشغال البرنامج لعرض الاشعار في الوقت المناسب دون مقاطعة عمل المستخدم (التطبيق سيعمل في الخلفية):

    
    package com.example;
     
     
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
                                
     
    public class MyAlarmService extends Service 
    {
          
       private NotificationManager mManager;
     
        @Override
        public IBinder onBind(Intent arg0)
        {
           // TODO Auto-generated method stub
            return null;
        }
     
        @Override
        public void onCreate() 
        {
           // TODO Auto-generated method stub  
           super.onCreate();
        }
     
       @SuppressWarnings("static-access")
       @Override
       public void onStart(Intent intent, int startId)
       {
           super.onStart(intent, startId);
          
           mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE);
           Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class);
         
           Notification notification = new Notification(R.drawable.ic_launcher,"This is a test message!", System.currentTimeMillis());
           intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_CLEAR_TOP);
     
           PendingIntent pendingNotificationIntent = PendingIntent.getActivity( this.getApplicationContext(),0, intent1,PendingIntent.FLAG_UPDATE_CURRENT);
           notification.flags |= Notification.FLAG_AUTO_CANCEL;
           notification.setLatestEventInfo(this.getApplicationContext(), "AlarmManagerDemo", "This is a test message!", pendingNotificationIntent);
     
           mManager.notify(0, notification);
        }
     
        @Override
        public void onDestroy() 
        {
            // TODO Auto-generated method stub
            super.onDestroy();
        }
     
    }

    سنحتاج في النهاية إلى تحديث AndroidManifest.xml ليتضمن Service وReceiver مع الصلاحيات المناسبة:

    
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="10" />
     
        <uses-permission android:name="android.permission.WAKE_LOCK" />
          
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
             
            <activity
                android:name="com.example.NextActivity"
                android:label="Next Screen">
            </activity>
             
            <service android:name=".MyAlarmService"
                     android:enabled="true" />
             
            <receiver android:name=".MyReceiver"/>
            
        </application>

    بعد ذلك جرب التطبيق على جهازك وستجده يعمل بدون مشاكل.

    شكرا أخي بصراحه شرح أكثر من رائع ولكن لدي استفسار هو اذا كان لدي برنامج بها اكثر من كلاس حيث أحتاج عمل اكثر من اشعار في اليوم مثلا وقت الظهر . وقت المغرب . وقت الفجر وهكذا وكل اشعار يحتوي علي نص معين، فكيف افعل ذلك؟

×
×
  • أضف...