Помощь FireReceiver в плагине Android Tasker

Я пытаюсь начать с создания плагинов Android для приложения Tasker. Я начал с загрузки примера "тост" и прочел документацию. Я все еще играю на этом примере, но когда я закомментирую действие тоста и заменю его кодом для создания диалога предупреждений (что я делал во многих других приложениях), плагин tasker всегда вылетает, когда я пробую его в Tasker., Я использую Android Studio.

Кто-нибудь знает почему? Мой код ниже:

public class FireReceiver extends BroadcastReceiver
    {

        /**
         * @param context {@inheritDoc}.
         * @param intent the incoming {@link com.twofortyfouram.locale.Intent#ACTION_FIRE_SETTING} Intent. This
         *            should contain the {@link com.twofortyfouram.locale.Intent#EXTRA_BUNDLE} that was saved by
         *            {@link EditActivity} and later broadcast by Locale.
         */
        @Override
        public void onReceive(final Context context, final Intent intent)
        {
    /*
     * Always be strict on input parameters! A malicious third-party app could send a malformed Intent.
     */

            if (!com.twofortyfouram.locale.Intent.ACTION_FIRE_SETTING.equals(intent.getAction()))
            {
                if (Constants.IS_LOGGABLE)
                {
                    Log.e(Constants.LOG_TAG,
                            String.format(Locale.US, "Received unexpected Intent action %s", intent.getAction())); //$NON-NLS-1$
                }
                return;
            }
    BundleScrubber.scrub(intent);

    final Bundle bundle = intent.getBundleExtra(com.twofortyfouram.locale.Intent.EXTRA_BUNDLE);
    BundleScrubber.scrub(bundle);

    if (PluginBundleManager.isBundleValid(bundle))
    {
        final String message = bundle.getString(PluginBundleManager.BUNDLE_EXTRA_STRING_MESSAGE);
        //Toast.makeText(context, message, Toast.LENGTH_LONG).show();

        AlertDialog.Builder builder = new AlertDialog.Builder(context);

        builder.setMessage("Yes, this worked!")
                .setIcon(R.drawable.ic_launcher)
                .setTitle(R.string.dialog_title);

        builder.setPositiveButton(R.string.dialog_yes, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // User clicked OK button
                //Toast.makeText(context, "You clicked yes", Toast.LENGTH_LONG).show();
            }
        });
        builder.setNegativeButton(R.string.dialog_no, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // User cancelled the dialog
                //Toast.makeText(getApplicationContext(), "You clicked no", Toast.LENGTH_LONG).show();
            }
        });


        AlertDialog dialog = builder.create();
        dialog.show();

    }

}

1 ответ

Решение

Для тех, кто может столкнуться с этим, я решил проблему в конце. По сути, FireReceiver не способен отображать такие вещи, как оповещения и т. Д., Поэтому вы должны использовать FireReceiver, чтобы, по сути, открыть другое действие вместо того, чтобы затем обрабатывать оповещение или что-либо еще, что вы хотите отобразить.

Это работает для меня (я изменил название пакета, но вы понимаете, суть). NewActiviy - это то, что называется активностью, которую вы хотите открыть FireReciever. Затем он показывает мой код для передачи переменных вместе с ним, что довольно стандартно:

Intent openNext = new Intent();
        openNext.setClassName("com.yourcompany.yoursetting", "com.yourcompany.blahblah.receiver.NewActivity");

        openNext.putExtra("AlertTitle", message);
        openNext.putExtra("AlertContentsString", AlertContents);
            openNext.putExtra("BackColour", BackgroundC);
            openNext.putExtra("TextColour", TitleC);

            openNext.putStringArrayListExtra("ShowArray", arr);

        openNext.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(openNext);
Другие вопросы по тегам