簡體   English   中英

從廣播接收器顯示小吃吧?

[英]Show a snackbar from a broadcast receiver?

所以我希望制作一個tasker插件,顯示一個用戶輸入文本的快餐欄。 我遇到的問題是我必須從廣播接收器上顯示小吃吧。 我以為我通過從活動類傳遞活動上下文找到了一種方法,但應用程序只是崩潰了。 非常感謝所有幫助。

這是接收器類:

public final class FireReceiver extends BroadcastReceiver {

    Maker maker;

    /**
     * @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 SnackbarActivity} 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);
            final String button = bundle.getString(PluginBundleManager.BUNDLE_EXTRA_STRING_BUTTON);
            final String mode = bundle.getString(PluginBundleManager.BUNDLE_EXTRA_STRING_MODE);
            if (maker == null) {
                maker = new Maker();
            }
            //maker.createSnackbar(message, button, mode);
            Snackbar.make(maker.getView(), message, Snackbar.LENGTH_SHORT).setAction(button, new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            }).show();
        }
    }
}

這是Maker類:

public class Maker extends Activity {

    public void createSnackbar(String Main, String Button, String Mode) {
        if (Mode.equals("Short")) {
            Snackbar.make(findViewById(android.R.id.content), Main, Snackbar.LENGTH_SHORT).setAction(Button, new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            }).show();
        } else {
            Snackbar.make(findViewById(android.R.id.content), Main, Snackbar.LENGTH_LONG).setAction(Button, new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            }).show();
        }
    }

    public View getView() {
        View view = findViewById(android.R.id.content);
        return view;
    }
}

我以為我通過從活動類傳遞活動上下文找到了一種方法,但應用程序只是崩潰了

您無法通過構造函數自己創建活動的工作實例。

我遇到的問題是我必須從廣播接收器上顯示小吃吧。

那不太可能。 歡迎您開始一項活動(可能使用對話框主題,不占用整個屏幕)。 或者,你可以展示Toast 或者,您可以提出Notification 這些是來自BroadcastReceiver主要UI選項。 Snackbar設計用於活動,而不是BroadcastReceiver

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM