#android #service
#Android #Обслуживание
Вопрос:
public class AndroidServiceStartOnBoot extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
showToast();
return START_REDELIVER_INTENT;
}
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
showToast();
}
};
private void showToast() {
logInRequest();
int icon = R.drawable.nicon;
long when = System.currentTimeMillis();
Intent intent = new Intent();
PendingIntent pendingIntent = PendingIntent.getActivities(AndroidServiceStartOnBoot.this, 0, new Intent[]{intent}, 0);
Notification notification = new Notification(icon, "Custom Notification", when);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
contentView.setImageViewResource(R.id.image, R.drawable.nicon);
contentView.setTextViewText(R.id.title, "Custom notification");
contentView.setTextViewText(R.id.text, status);
contentView.setOnClickPendingIntent(R.id.closeOnFlash, pendingIntent);
notification.contentView = contentView;
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;
notification.flags = Notification.FLAG_AUTO_CANCEL; //Do not clear the notification
notification.defaults |= Notification.DEFAULT_LIGHTS; // LED
notification.defaults |= Notification.DEFAULT_VIBRATE; //Vibration
notification.defaults |= Notification.DEFAULT_SOUND; // Sound
mNotificationManager.notify(0, notification);
new Handler().postDelayed(mRunnable, 4000);
}
private void logInRequest() {
SharedPreferences tprefs = getSharedPreferences("com.nahid.com.gsdambassadorpractice", MODE_PRIVATE);
String token = tprefs.getString("token", "false");
String url = Common.baseUrl "ambassadorcall/api/call/addcard";
Map<String, String> param = new HashMap<String, String>();
param.put("token", token);
param.put("cardno", "125847");
JSON2Request json2Request = new JSON2Request(Request.Method.POST, url, param, logInListeneryy());
RequestManager.showProgressDlg(AndroidServiceStartOnBoot.this);
RequestManager.addRequest(json2Request, this);
}
private Response.Listener<JSONObject> logInListeneryy() {
return new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
RequestManager.dismissProgressDlg();
JSONObject jobj = response;
try {
if (jobj.getString("status").equals("success")) {
status = jobj.getString("status");
Toast.makeText(AndroidServiceStartOnBoot.this, "Working", Toast.LENGTH_LONG).show();
//String redirect =stepManage.gotostep(LoginActivity.this,jobj.getString("nextstep"));
/**
String token = tprefs.getString("token", "false");
Toast.makeText(LoginActivity.this, token, Toast.LENGTH_LONG).show();
**/
} else {
Toast.makeText(AndroidServiceStartOnBoot.this, jobj.getString("message"), Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}
Я хочу создать службу, которая будет отображать пользовательские уведомления с помощью диспетчера уведомлений.Но я хочу обновить уведомление, используя api из класса обслуживания.Даже когда приложение не используется.Как я могу это сделать в Android, пожалуйста, помогите мне..
Комментарии:
1. опубликуйте свой код, что вы сделали до сих пор
2. я опубликовал свой код. пожалуйста, помогите сейчас. с помощью функции loginrequest() я вызываю api, а с помощью loginListneryy() я получаю результат от сервера. я хочу показать этот результат в уведомлении.
Ответ №1:
Вы можете добиться этого, постоянно запуская фоновую службу и показывая уведомление при некоторых условиях. Как и в моем приложении, у меня есть сервис и класс для уведомлений, и при определенных условиях я вызываю класс уведомлений из своего сервиса.
Комментарии:
1. да, я использую фоновую службу. Служба запускается, когда телефон загружается полностью. Но я хочу, чтобы я хотел вызвать api через определенный интервал времени, а затем, проанализировав данные json, я обновлю уведомление с помощью диспетчера уведомлений. Но я хочу, чтобы все происходило из класса обслуживания. Если вы, пожалуйста, помогите мне.
2. Для этого вы можете использовать таймеры, в которых вы можете установить нужное время, а затем вызвать свой api и уведомить пользователя.
3. Я хочу знать в классе обслуживания, где я буду использовать свой api. Метод onStartCommand или метод onHandleIntent. Я был бы очень рад, если бы вы дали мне пример кода