ساخت نوتیفیکیشن آندروید 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>
-
علی رسالت - 30 سپتامبر 2015
با parse کاری ندارم
اگر بخوام مثلا عنوان رو از یه لینک متنی تو یه هاست بگیرم به چه صورت باید عمل کنم
http://www.name.com/file.txt -
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/ -
علی رسالت - 1 اکتبر 2015
ممنون به خاظر اموزش که گذاشتین نگاه کردم
اما یه سوال همین لینک متنی رو که از یه ادرس گرفتم بخوام تو عنوان نوتفیکیشن همین سورسی که گذاشتین قرار بدم باید باید به چه صورت عمل کنم اصلا شدنی؟
منظورم این دو قسمت هستش :
CharSequence title = “نوتیفیکیشن”;
CharSequence text = “ساخت نوتیفیکیشن جدید”; -
علی رسالت - 3 اکتبر 2015
اقا شدنی به نظرتون؟
-
ali - 4 اکتبر 2015
بله در برنامه نویسی همه کار شدنی هست .
شما میتوانید متن نوتیفیکیشن را فایل متنی و یا حتی از دیتابیس بگیرید و بر روی دیوایس نمایش بدهید .
شما هنگامی که فایل متنی رو باز میکنید میتونید هر خط از کد رو در یک متغییر ذخیره کنید و در هنگام نمایش نوتیفیکیشن از همان متغییر ها استفاده کنید … -
علی رسالت - 4 اکتبر 2015
امیدوارم بودم یه مثال میزدید واسم
در کل روشنم کردید ممنونم
علی اقا یکم گشتم تو اینترنت مطلبی در این مورد که میگم الان بهتون رو پیدا نکردم
فرض کنید یه هاست دارم که تو دیتابیسش یه جدول و رکورد دارم که توش یه عدد هست مثلا ۱
حالا از اون طرف تو برنامه اندرویدم یه دکمه دارم که وصل به این دیتابیسم
حالا کارش چیه میخوام وقتی عدد ۱ بود تو دیتابیس این نشون داده بشه
ولی کردمش ۰ دیگه دکمه نشون داده نشه
اینو اگر منبعی سورسی یا مقاله ای در موردش هست ممنون میشم بهم معرفی کنید - ali - 5 اکتبر 2015
-
فرهاد - 11 ژانویه 2016
سلام
من میخوام توی برنامم، این قابلیت(notification) رو بذارم که وقتی کاربر به اینترنت وصل شد در صورت آپدیت بودن برنامه یه اعلان به کاربر بیاد
مثل برنامه تقویم باد صبا
میشه سورسش رو برام بذارید؟
ممنون -
علی - 20 می 2017
من هیچی بلد نیستم میخوام نوت بخرم فروشنده بیاد پی وی تلگرامم نوت اپ میخوام مخفی واسه تلگرلم @Ali_skopm_12
-
علیرضا نظامی - 2 نوامبر 2017
سلام ممنون واسه آموزش
اگه برنامه در حالت اجرا نباشه هم نوتیفیکیشن میاد؟؟
اگه نه میشه آموزش اونم بزارین؟