java - 如何在 android-java 中同时扩展 Activity 类和 BroadcastReceiver

标签 java android android-intent android-broadcastreceiver

我广播一个 Intent :com.ss.CUSTOM_INTENT

/*-----Class BroadcastReceiverApp-------*/<br/>
public class BroadcastReceiverApp extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.broadcast_activity);
    }

/*    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }*/

    // broadcast a custom intent.
    public void broadcastIntent(View view){
        Intent intent = new Intent();
        intent.setAction("com.ss.CUSTOM_INTENT");
        sendBroadcast(intent);
    }
}
/*------------------------*/

但是当我收到该广播 Intent 时,我希望它显示在通知抽屉中。 Receiver 类只能扩展 BroadcastReceiver 类,因此现在允许扩展 Activity 类,但我无法使用:

Context context = getApplicationContext();

将在Notification.Builder(context)中进一步使用....

这是我的广播接收器类:

public class MyReceiver extends BroadcastReceiver , Activity{

    private static final int MY_NOTIFICATION_ID=1;
    NotificationManager notificationManager;
    Notification myNotification;
    private final String myBlog = "http://android-er.blogspot.com/";
    Context cont = getApplicationContext();

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();

                Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myBlog));
        PendingIntent pendingIntent = PendingIntent.getActivity(
                MyReceiver.this,
                0,
                myIntent,
                Intent.FLAG_ACTIVITY_NEW_TASK);

        myNotification = new Notification.Builder(context)
                .setContentTitle("Exercise of Notification!")
                .setContentText("http://android-er.blogspot.com/")
                .setTicker("Notification!")
                .setWhen(System.currentTimeMillis())
                .setContentIntent(pendingIntent)
                .setDefaults(Notification.DEFAULT_SOUND)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.ic_launcher)
                .build();

        notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(MY_NOTIFICATION_ID, myNotification);

        Log.i(getClass().getSimpleName(),"Sucessfully Changed Time");
    }
}

有人可以帮忙吗?我想稍后将广播 Intent 更改为“android.intent.action.DATE_CHANGED/TIME_CHANGED”,这甚至不起作用。

最佳答案

But when I receive that broadcast intent, I want it to be shown in notification drawer.

如果您的问题是“如何从 BroadcastReceiver 更新 gui”,您必须将 BroadcastReceiver 类放入要更新的 Activity 中。

嵌套的BroadcastReceiver类可以访问外部Activity的元素。

示例请参见 Android BroadcastReceiver within Activity

关于java - 如何在 android-java 中同时扩展 Activity 类和 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377067/

相关文章:

java - android studio 找不到 "Activity"符号

android - 在android中显示栏之间的空格

java - 将提供者作为 Intent 的额外内容传递

android - 从内部存储的下载文件夹中打开下载的文件 (pdf)

android - 从联系人应用程序中选择联系人;但仅列出带有电子邮件的联系人

java - 如何在 spring boot 中为应用程序 yml 定义复​​杂列表?

java - 如何在应用程序屏幕中央显示加载对话框?

java - Activity 之间的Android数据检索

java - 打印 Java 纪元的毫秒数返回 18000000?

java - LibGdx:表格显示不正确