Как запустить JavaScript в фоновом режиме? - PullRequest
4 голосов
/ 27 февраля 2012

Я создал плагин для фонового сервиса (для запуска приложения в фоновом режиме) в phonegap. Я создал сервис для запуска приложения в фоновом режиме с помощью Android. Затем запускаю сервис из плагина. В index.html я вызываю этот плагин всобытие нажатия кнопки. Когда я нажимаю кнопку, сервис запускается.Можно ли с помощью сервиса Android запускать javascript в фоновом режиме и получать оповещения из фона? Как это сделать?Теперь я хочу запустить javascript в фоновом режиме. Возможно ли получить предупреждение в фоновом режиме. Также необходимо вызвать службу отдыха wcf.

, пожалуйста, помогите мне. Спасибо заранее.

Мойкод в Index.html

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
{
alert("hello");
navigator.notification.alert("hai");
}

после запуска службы. Моё приложение запускается в фоновом режиме. Я хочу это "alert (" hello ");" "navigator.notification.alert (" hai ");"в фоновом режиме. То есть в моем файле .html. Но вы даете код активности в android. Он должен запускать javascript в фоновом режиме и отображать предупреждение от этого. Пожалуйста, помогите мне. Спасибо заранее. У меня есть еще одно сомнениеСлужба также запускает мою службу отдыха wcf в фоновом режиме и оповещения от этого сервиса.пожалуйста, скажите мне решение Мой код для обслуживания:

public class MyService extends Service {
    private static final String TAG = "MyService";
    MediaPlayer player;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onCreate");


        player = MediaPlayer.create(this, R.raw.braincandy);
        player.setLooping(false); // Set looping
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        player.stop();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        player.start();


        Toast.makeText(this, "alert Started", Toast.LENGTH_LONG).show();
    }
}

В этом коде я добавил один player.so после запуска службы. Песня воспроизводится на переднем плане, песня воспроизводится, после нажатия кнопки home в эмуляторе (на заднем плане) .Я хочу показать оповещение, как это. Как это сделать?

В моем плагине

if (CALL_SERVICE_ACTION.equals(action)) {
    Log.d(TAG, "CALL_SERVICE_ACTION");

    ctx.startService(new Intent(ctx, MyService.class));
    Intent i = new Intent(ctx, AppNotification.class);
    ctx.startActivity(i);

}

У меня есть вызов вашей активности после запуска сервиса. Он показывает предупреждение только на переднем плане послеПри нажатии кнопки «Домой» в эмуляторе. Предупреждение не приходит (из фона). Скажите, пожалуйста, решениесоздал.и он вызывает callNotificationFunction из callservicesuccesscallback.it отобразить предупреждение на переднем плане. после того, как я нажимаю кнопку «Домой» в эмуляторе, ничего не происходит, предупреждение не выводится из фона, пожалуйста, направьте меня заранее, спасибо. Если я вызываю функцию callNotificationFunction в отдельной кнопке, ничего не происходит (предупреждение не отображается на переднем плане) и нет ошибки в logcat

Ответы [ 2 ]

0 голосов
/ 28 мая 2017

Вы можете запускать Javascript в фоновом режиме на Android, используя Сервис, WebView и WindowManager. Проверьте это сообщение здесь .

0 голосов
/ 27 февраля 2012

Для того, чтобы показать предупреждение на вашем фоне. Создайте действие, которое запускается как диалог. Например, создайте активность, подобную этой

public class AppNotification extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AlertDialog alertDialog = new AlertDialog.Builder(AppNotification.this)
            .create();
    alertDialog.setTitle("Alert");
    alertDialog.setMessage("Something");

    alertDialog.setButton("OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();                       
                }
            }); 
    alertDialog.show();
}

}

Также в файле манифеста используйте этот

 <activity
        android:name=".AppNotification"
        android:theme="@android:style/Theme.Dialog" >
 </activity>

И вызывайте это действие, когда захотите показать некоторые уведомления, подобные этому

Intent i = new Intent(context, AppNotification.class);
context.startActivity(i);

Для отправки уведомлений используйте

navigator.notification.alert("hai"); // For foreground
window.plugins.BackgroundService.callNotifications('callNotifications',
callNotificationsSuccessCallBack, callNotificationsFailCallBack); // For Background

Так же, как вы использовали сервисный плагин для вызова сервиса, вы используете уведомления о вызовах. А затем выполните действия, подобные этому

else if (CALL_NOTIFICATION_ACTION.equals(action)) {
Log.d(TAG, "CALL_NOTIFICATION_ACTION");

Intent i = new Intent(ctx, AppNotification.class);
context.startActivity(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...