ساخت نوتیفیکیشن آندروید Android Notification

سوال :  میخوام در برنامه ام یه نوتفیکیشن طراحی کنم به این صورت که وقتی اینترنت کاربر وصل باشه یه پیام در قسمت نوتیفیکیشن بهش نمایش داده بشه و اگر هم اینترنت کاربر وصل نباشه هیچ نوتیفیکیشن ساخته نشه .

پاسخ : خوب باهم بریم پروژه رو نگاه کنیم که به چه صورت برنامه نویسی شده است :

در فایل Main.java ابتدا اینترنت کاربر رو چک میکنه اگر متصل بود یک پیام به کاربر نمایش داده میشه و بعد از آن یک نوتیفیکیشن ایجاد میشود .

فایل Main.java :

package com.tooba.co;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.Toast;

public class Main extends Activity {

	@SuppressWarnings("deprecation")
	@Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            new NetCheck().execute();      
            
    }
	
    
    // چک کردن کانکشن اینترنت کاربر
    private class NetCheck extends AsyncTask<String,String,Boolean>
   {
       private ProgressDialog nDialog;

       @Override
       protected void onPreExecute(){
           super.onPreExecute();
           nDialog = new ProgressDialog(Main.this);
           nDialog.setTitle("چک کردن کانکشن اینترنت");
           nDialog.setMessage("در حال بررسی ...");
           nDialog.setIndeterminate(false);
           nDialog.setCancelable(true);

           nDialog.show();
       }
       /**
        * Gets current device state and checks for working internet connection by trying Google.
       **/
       @Override
       protected Boolean doInBackground(String... args){

           ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
           NetworkInfo netInfo = cm.getActiveNetworkInfo();
           if (netInfo != null && netInfo.isConnected()) {
               try {
                   URL url = new URL("http://www.google.com");
                   HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
                   urlc.setConnectTimeout(3000);
                   urlc.connect();
                   if (urlc.getResponseCode() == 200) {
                       return true;
                   }
               } catch (MalformedURLException e1) {
                   // TODO Auto-generated catch block
                   e1.printStackTrace();
               } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }
           }
           return false;

       }
       @Override
       protected void onPostExecute(Boolean th){

           if(th == true){
               nDialog.dismiss();
               Toast.makeText(getApplicationContext(), "اینترنت وصل می باشد .", Toast.LENGTH_LONG).show();
               CreateNotification();
           }
           else{
               nDialog.dismiss();
               Toast.makeText(getApplicationContext(), "اینترنت قطع می باشد.", Toast.LENGTH_LONG).show();
           }
       }
   }


	private void CreateNotification(){
    	CharSequence renderText = "در حال ساخت نوتیفیکیشن جدید";
    	CharSequence title = "نوتیفیکیشن";
    	CharSequence text = "ساخت نوتیفیکیشن جدید";
    	long time = System.currentTimeMillis();
    	Context context = getApplicationContext();
    	
    	Intent notifyIntent = new Intent(this , Main.class);
    	PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notifyIntent, 0);
    	
    	final Notification notification = new Notification(R.drawable.ic_launcher , renderText , time);
    	notification.setLatestEventInfo(context, title, text, contentIntent);
    	
    	String notyService = Context.NOTIFICATION_SERVICE;
    	final NotificationManager nManager = (NotificationManager)  getSystemService(notyService);
    	
    	nManager.notify(1, notification);
    	
    }
}

فایل AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tooba.co"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />
    
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".Main"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        
    </application>

</manifest>

 

 

  1. علی رسالت - 30 سپتامبر 2015

    با parse کاری ندارم
    اگر بخوام مثلا عنوان رو از یه لینک متنی تو یه هاست بگیرم به چه صورت باید عمل کنم
    http://www.name.com/file.txt

  2. ali - 1 اکتبر 2015

    به لینک زیر مراجعه کنید:
    http://blog.toobaweb.com/%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%81%D8%A7%DB%8C%D9%84-txt-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-url-%D8%AF%D8%B1%D8%A2%D9%86%D8%AF%D8%B1%D9%88%DB%8C/

  3. علی رسالت - 1 اکتبر 2015

    ممنون به خاظر اموزش که گذاشتین نگاه کردم
    اما یه سوال همین لینک متنی رو که از یه ادرس گرفتم بخوام تو عنوان نوتفیکیشن همین سورسی که گذاشتین قرار بدم باید باید به چه صورت عمل کنم اصلا شدنی؟
    منظورم این دو قسمت هستش :
    CharSequence title = “نوتیفیکیشن”;
    CharSequence text = “ساخت نوتیفیکیشن جدید”;

  4. علی رسالت - 3 اکتبر 2015

    اقا شدنی به نظرتون؟

  5. ali - 4 اکتبر 2015

    بله در برنامه نویسی همه کار شدنی هست .
    شما میتوانید متن نوتیفیکیشن را فایل متنی و یا حتی از دیتابیس بگیرید و بر روی دیوایس نمایش بدهید .
    شما هنگامی که فایل متنی رو باز میکنید میتونید هر خط از کد رو در یک متغییر ذخیره کنید و در هنگام نمایش نوتیفیکیشن از همان متغییر ها استفاده کنید …

  6. علی رسالت - 4 اکتبر 2015

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

  7. ali - 5 اکتبر 2015

    خواهش میکنم ،خدمت شما :
    http://blog.toobaweb.com/%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D8%B3%D8%B1%D9%88%D8%B1-%D9%88-%D9%85%D8%AE%D9%81%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-button-%D8%AF%D8%B1/

  8. فرهاد - 11 ژانویه 2016

    سلام
    من میخوام توی برنامم، این قابلیت(notification) رو بذارم که وقتی کاربر به اینترنت وصل شد در صورت آپدیت بودن برنامه یه اعلان به کاربر بیاد
    مثل برنامه تقویم باد صبا
    میشه سورسش رو برام بذارید؟
    ممنون

  9. علی - 20 می 2017

    من هیچی بلد نیستم میخوام نوت بخرم فروشنده بیاد پی وی تلگرامم نوت اپ میخوام مخفی واسه تلگرلم @Ali_skopm_12

  10. علیرضا نظامی - 2 نوامبر 2017

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


همینک دیدگاه خود را برای ما بنویسید!