pushnotifiacation and alarmManager
سلام دوستان به یک مشکلی در مورد pushnotification و alarmManager بر خوردم کد ها را هم گذاشتم تا بهتر متوجه بشید
قرار هست بر اساس زمان مشخص مثلا هر 1 ساعت یم بار درخواست سمت سرور بفرستیم اگر پیام و خبر جدیدی باشه بالای گوشی یک آیکون نمایش داده بشه کلیت کار این بود که عرض کردم
حالا مشکل ها این هست که 1- به سرور درخواست ارسال داده میشه جواب را بر میگرداند ولی اون آیکون را نمایش نمیده
2-تا گوشی ریست نشه کار نمیکنه
از بعد از این کار برای خروج از نرم افزار وقتی نرم افزار بسته شده بازدوباره باز میشه(البته نه روی همه گوشی ها)
3-وقتی گوشی ریست میشه و همه چی کار میکنه بدون اینکه روی آیکون کلیک کنم نرم افزار خودش Run میشه
واقعا دیگه نمیدونم چکار کنم و فقط همین قسمت از پروژه باقی مانده
میشه یکی کمک کنه و حلش کنه من که دیگه نمیدونم باید چکار کنم
در ضمن تمام کدها مطابق کدهای استاد هست این را گذاشتم گفتم شادی کار کنه ولی متاسفانه کار نکرد
در ضمن باید طوری باشه که اگر گوشی Lock هم باشه کار کنه
با سپاس
package com.iran.soft;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
public class BootCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, final Intent intent) {
C2D service = new C2D()
.key("validKey")
.url("http://192.138.1.10/admin-service/index.php")
.interval(1000)
.listener(new C2D.Listener() {
public void onFail(int statusCode) {
Log.i("LOGFAIL", "code :" + statusCode);
}
public void onDataReceive(String data) {
Log.i("LOGDATE", "Data :" + data);
if (data.contains("1")) {
Log.i("LOGD", data); //ta in ghesmat kar mekone vali dg Toast ro nehson nemede
Toast.makeText(G.context, "You have some news", Toast.LENGTH_SHORT).show();
Log.i("ALARM", "ALARM");
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(G.context)
.setSmallIcon(R.drawable.ic_launcher) // notification icon
.setContentTitle("Notification!") // title for notification
.setContentText("New OFF FROM SERVER") // message for notification
.setAutoCancel(true); // clear notification after click
Intent intent = new Intent(G.context, ActivityMain.class);
//PendingIntent pi = PendingIntent.getActivity(G.context, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getService(G.context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pi);
NotificationManager mNotificationManager = (NotificationManager) G.context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
G.alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 2000, pi);
Log.i("Log", "STR :" + data);
}
else
{
Log.i("Log", "SORRY :" + data);
}
}
}).start();
}
}
package com.iran.soft;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
public class C2D {
public static final int PROTOCOL_EXCEPTION = -1;
public static final int IO_EXCEPTION = -2;
public static final int UNKNOWN_EXCEPTION = -3;
private Listener listener;
private String key;
private String url;
private ArrayList<NameValuePair> inputArguments = new ArrayList<NameValuePair>();
private long interval;
private boolean enable = true;
public static interface Listener {
public void onDataReceive(String data);
public void onFail(int statusCode);
}
public C2D listener(Listener value) {
listener = value;
return this;
}
public C2D interval(long value) {
interval = value;
return this;
}
public C2D key(String value) {
key = value;
return this;
}
public C2D url(String value) {
url = value;
return this;
}
public void disable()
{
enable = false;
}
public void enable()
{
enable = true;
start();
}
public C2D start()
{
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (enable) {
try {
check();
Thread.sleep(interval);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
thread.start();
return this;
}
public void check() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 1000);
HttpConnectionParams.setSoTimeout(params, 1000);
HttpClient client = new DefaultHttpClient(params);
HttpPost request = new HttpPost(url);
inputArguments.clear();
inputArguments.add(new BasicNameValuePair("key", key));
request.setEntity(new UrlEncodedFormEntity(inputArguments));
HttpResponse httpResponse = (HttpResponse) client.execute(request);
String data = streamToString(httpResponse.getEntity().getContent());
if (listener != null) {
listener.onDataReceive(data);
return;
}
}
catch (ClientProtocolException e) {
if (listener != null) {
listener.onFail(PROTOCOL_EXCEPTION);
}
}
catch (IOException e) {
if (listener != null) {
listener.onFail(IO_EXCEPTION);
}
}
catch (Exception e) {
if (listener != null) {
//listener.onFail(UNKNOWN_EXCEPTION);
}
}
}
});
thread.start();
}
private String streamToString(InputStream inputStream) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuffer = new StringBuilder();
String line = null;
try {
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append((line + "\n"));
}
}
catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
return stringBuffer.toString();
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .