android - Android 上带有远程 View 的自定义通知

标签 android android-layout android-widget

我已经使用 setOnClick pending intent 编辑了代码,此代码适用于 ImageView 和通知文本,如我所愿,但我仍然需要一些帮助。

我想从我的服务类暂停或播放媒体播放器,那么如何从通知挂起 Intent 访问服务的停止或播放方法?

有人说广播接收器会帮助你,但我不明白它是如何工作的。 我已经设法从通知的暂停按钮打开网络浏览器,但我不知道如何访问服务方法。分享任何示例代码(如果有)。

@SuppressWarnings("deprecation")
void showNotification() {
     int pendingRequestCode = 0;
        int pendingFlag = 0;

        final Resources res = getResources();
        final NotificationManager notificationManager = (NotificationManager) getSystemService(
                NOTIFICATION_SERVICE);
        Intent intent = new Intent(this,MainActivity.class);
        PendingIntent pi= PendingIntent.getActivity(this, 0, intent, 0);
        Notification.Builder builder = new Notification.Builder(this)
                .setSmallIcon(R.drawable.ic_action_search)
                .setAutoCancel(true)
                .setTicker("this is notification")
                .setContentIntent(pi);


        // Sets a custom content view for the notification, including an image button.
        RemoteViews layout = new RemoteViews(getPackageName(), R.layout.notification);
        layout.setTextViewText(R.id.notification_title, getString(R.string.app_name));
        Intent clickIntent = new Intent(Intent.ACTION_VIEW, Uri_myBlog);
        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),pendingRequestCode,  clickIntent, pendingFlag);
        layout.setOnClickPendingIntent(R.id.notification_button,pendingIntent);
        builder.setContent(layout);

        // Notifications in Android 3.0 now have a standard mechanism for displaying large
        // bitmaps such as contact avatars. Here, we load an example image and resize it to the
        // appropriate size for large bitmaps in notifications.
        Bitmap largeIconTemp = BitmapFactory.decodeResource(res,
                R.drawable.pause);
        Bitmap largeIcon = Bitmap.createScaledBitmap(
                largeIconTemp,
                res.getDimensionPixelSize(android.R.dimen.notification_large_icon_width),
                res.getDimensionPixelSize(android.R.dimen.notification_large_icon_height),
                false);
        largeIconTemp.recycle();

        builder.setLargeIcon(largeIcon);

        notificationManager.notify(NOTIFICATION_DEFAULT, builder.getNotification());
    }

    PendingIntent getDialogPendingIntent(String dialogText) {
        return PendingIntent.getActivity(
                this,
                dialogText.hashCode(), // Otherwise previous PendingIntents with the same
                                       // requestCode may be overwritten.
                new Intent(ACTION_DIALOG)
                        .putExtra(Intent.EXTRA_TEXT, dialogText)
                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
                0);
    }

最佳答案

您没有说明您的目标是哪个版本的 Android,但通常要到 Android 3.x 才能实现(蜂窝)。所以如果你希望在 2.x 上发生这种情况,那么抱歉 - 你运气不好。

对于 Honeycomb,您只需提供自定义布局并分配 PendingIntent您需要的每个按钮,请调用 setOnClickPendingIntent() .如果您下载了 SDK 的示例,请查看 HoneycombGallery 应用程序的 MainActivity(应位于您的 <SDK>\samples\android-XX\HoneycombGallery\ 文件夹中。XX 是 14(或更高)中的任何值)。

关于android - Android 上带有远程 View 的自定义通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214487/

相关文章:

java - Android Studio DexArchiveMergerException:更新后无法合并dex

android - 在 gradle 中设置自定义库 repo

android - 设置抽屉导航图标的背景

Android:用对象填充 ListView

android - 无法启动接收器 java.lang.NullPointerException

android - 小部件 minHeight ="72dp"给出 2 行高度

android - 类似 Twitter 的 Android 自动完成 TextView

android - 单击 listView 时不显示任何消息

Android ViewPager 加载不正确的 fragment

android - 如何在 Android 端动画加载 GIF?