将 Intent 从 BroadcastReceiver 类发送到当前正在运行的活动

2024-02-01

我有一个扩展的类BroadcastReceiver。收到短信后,我想将信息传递到我的主要活动类,以在框中显示文本(如果文本已存在,则追加)。

public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
    {
        Intent i = new Intent(context, MainActivity.class);
            i.putExtra("updatedString","Hello");
            context.startActivity(i);
    }
}

MainActivity.java

public class MainActivity extends Activity{

  private TextView results;
  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Bundle extras = getIntent().getExtras();
        if(extras!=null){
            results = (TextView) findViewById(R.id.results);
            results.setVisibility(View.VISIBLE);
            results.append(extras.getString("updatedString"));
        }

}

我只有一门活动课(MainActivity.java)。但是,当我这样做时,我收到异常无法暂停活动。


你有三种方法:
1)您可以在您的内部定义您的广播MainActivity像这样:
in onCreate()

registerReceiver(smsReceiver, new IntentFilter(SMS_RECIEVED));  

并定义 smsReciverMainActivity

private BroadcastReceiver smsReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        //you can update textBox here
        handler.postDelayed(sendUpdatesToUI, 10);  
    }
};  

定义一个可运行程序来更新 UI

private Runnable sendUpdatesToUI = new Runnable() {
    public void run() {
        update();
    }
};

以及更新方法

private void update(String text) {
    textView.setText(textView.getText().toString() + text);
} 

2)在你的Activity和BroadCastReceiver之间注册一个接收器

3)用新的Intent启动你的Activity来更新当前打开的Activity

Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("Key", "text");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);  

UPDATE :
解释方法2
MainActivity.class

in onResume()

registerReceiver(broadcastReceiver, new IntentFilter(SmsReceiver.BROADCAST_ACTION));  

in onDestroy()

unregisterReceiver(broadcastReceiver);

本地广播(broadcastReceiver,在 MainActivity.class 中)

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        updateUI(intent);
    }
};
private void updateUI(Intent intent) {
    String text = intent.getStringExtra("key");
    textView.setText(textView.getText().toString() + text);
}

SmsReceiver.class
全局属性

public static final String BROADCAST_ACTION = "your.package.name.displayevent";
private final Handler handler = new Handler();
Intent intent;
Context context;

in onReceive()

handler.removeCallbacks(sendUpdatesToUI);
handler.postDelayed(sendUpdatesToUI, 10);

this.context = context;//you can retrieve context from onReceive argument

this.intent = new Intent(BROADCAST_ACTION);

定义两个方法

private Runnable sendUpdatesToUI = new Runnable() {
    public void run() {
        display();
    }
};

private void display() {
    intent.putExtra("key", text);
    context.sendBroadcast(intent);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Intent 从 BroadcastReceiver 类发送到当前正在运行的活动 的相关文章

  • 用于 Kotlin 中单元测试的 BuildConfigField 模拟

    我正在尝试尽可能多地涵盖Kotlin Android 库我遇到了有关自定义 BuildConfig 变量的问题 更广为人知的是buildConfigField 我想模拟这个变量来测试两者true and false values 从 Gra
  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • 使用同一个侦听器的多个活动

    我有 4 个活动 它们都包含一个 xml 页脚 其中包含 4 个按钮 每个活动一个 我现在想为这些按钮设置 onclicklistener 它是页脚中的自制菜单 问题是 如何使用侦听器以便重用代码 我有两个想法 创建一个实现 onclick
  • 为什么不能在 Fragment 中使用 ViewPager?它实际上是

    有信息无法使用ViewPager在一个Fragment在许多来源中 例如 Android 开发者繁忙编码指南 http commonsware com 作者 Mark Murphy 或者类似的帖子this https stackoverfl
  • relativelayout导致动画不起作用?

    我有一个活动 其布局仅包含一个 VideoView 这是 XML
  • 更改语言 Flutter 的按钮

    我正在 Flutter 中构建一个应用程序 到目前为止 我正在使用 JSON 国际化 其中应用程序的语言基于用户手机中默认的语言 它工作得很好 但我想给用户有机会在不更改手机系统语言设置的情况下更改语言 只需单击按钮 然后应用程序即可更改语
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • 如何绘制部分位图圆弧?类似于圆形进度轮,但具有显示得越来越多的位图。

    我正在寻找的是一种以顺时针圆形方式显示图像的视图 当进度为 25 时 应显示前 90 度 当进度为 100 时 应绘制完整的 360 度 它与使用 canvas drawArc 非常接近 但此方法仅适用于 Paint 对象 不适用于位图 其
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 如何在同一设备上运行的 Android 应用程序之间传输文件?

    我正在编写一个与 RESTful 服务交互的 Android 应用程序 该 Web 服务本质上是一个文件系统 并提供元数据以及对文件的 CRUD 访问 我的应用程序检索元数据 并通过ContentProvider 我需要添加与我的应用程序在
  • 如何在Android模拟器中隐藏应用程序图标?

    我有一个应用程序在启动完成后自动启动 但应用程序图标显示在android模拟器中 现在我想向用户隐藏该图标 这样用户就无法知道应用程序已启动 并且他们无法启动该应用程序手动申请 在您的 AndroidManifest xml 文件中 您可能
  • Android - 状态栏阻止全屏

    我的应用程序启动时可以全屏正确运行 然而 在最小化然后返回应用程序后 状态栏会弹出 并将我的视图向下推一点 如何防止状态栏移动我的视图 这是我的布局
  • Android 操作项上的通知徽章

    我想在操作栏中放置的购物车图像上添加一个通知徽章 并以编程方式操作它 有帮助吗 您可以显示自定义MenuItem on ActionBar通过创建一个custom layout for MenuItem 要设置自定义布局 您必须使用菜单项属
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • Expresso 的 Android 测试首选项片段

    我在通过 Expresso 测试我的代码时遇到问题 我写了这段代码 public class SettingsActivity extends Activity Override protected void onCreate Bundle
  • XML 配置中的 screenName 不起作用

    我刚刚在我的应用程序中添加了对 Google Analytics 分析 的支持 但我无法
  • 调试android数据绑定?

    谁能告诉我如何调试或找到数据绑定生成的代码 从this https www youtube com watch v NBbeQMOcnZ0链接我发现它生成了所需的代码 我猜您正在寻找自动生成的绑定 java 文件 我也在寻找他们 最后我在这
  • 动态更改按钮上的图像视图

    在我的应用程序中 我有按钮和ImageView 当我按下按钮时我想改变ImageView 我的可绘制文件夹中有 5 张图像 按下按钮时 ImageView 根据按钮单击一张一张地更改图像 我想要它的解决方案 感谢任何可以提供帮助的人 维护一

随机推荐

  • 多线程Windows服务的线程库[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 UITextField 增加到一定长度

    我有一个 UITextField 我想 自动 调整其边界大小 以便为字段中添加的字符串腾出空间 但是 我希望它的宽度达到一定程度的最大值 我可以采取的最佳方法是什么 谢谢你的帮助 EDIT 测试视图 h import
  • Haskell —— 是否有元组的 monad 序列函数?

    假设我有一个类型的值Monad m gt m a m a 我想对这对进行 排序 以创建类型的值Monad m gt m a a 它以与 序列 函数相同的方式组合两个值的单子上下文 是否有一些标准功能或标准方法可以做到这一点 这个操作还有意义
  • 每个页面加载的计时器减量都会有所不同

    我的项目有一个计时器 每次减少 1 秒 但是 如果计数器第二次开始工作 它会减少 2 秒 第三次则减少 3 秒 依此类推 我应该怎么做才能始终减少 1 秒 void viewDidAppear BOOL animated count 15
  • 计算大于另一个整数 x 的 k 位集合的最小整数?

    我想精确地计算最小整数k位设置 大于另一个整数x 例如如果x 1001010然后 为了k 2 答案应该是1010000 for k 4 答案应该是1001011并为k 5答案是1001111 我认为需要设置至少与整数中最左边设置的位一样多的
  • JSHint 奇怪的行为

    我认为我应该问关于 jSHint 的新问题 讨论开始了here https stackoverflow com questions 35987052 js strange behavior 我现在可以看到来自 JSHint 的奇怪警告 我只
  • 从 KMS CipherTextBlob 获取 KMS 密钥

    如何从密文 blob 中获取 KMS 密钥信息 以aws网站为例 AWS KMS 文档 http docs aws amazon com cli latest reference kms encrypt html aws kms encry
  • Matlab 和 XTickLabel

    我已经尝试让 Matlab 更改轮廓图上的标签大约一个小时了 当我去更改 XTickLabel 或 XTick 时 它只是完全删除我的 x 轴 令人沮丧和愤怒的是我正在做的事情exactly什么所有的帮助页面 http www mathwo
  • 使用 Git 版本控制查看文件的更改历史记录

    如何查看单个文件的历史记录以及更改内容的完整详细信息 git log filename 显示文件的提交历史记录 但如何查看已更改的文件内容 这让 Git 为每个日志条目生成补丁 git log p filename See git help
  • 如何使css/images/js文件等所有静态文件不被asp.net mvc处理?

    静态文件有可能不被asp net mvc引擎处理吗 我可以在 IIS 级别或其他级别执行此操作吗 当然无需为静态文件创建单独的 IIS 网站 您需要为不希望通过 ASP NET MVC 提供服务的特定类型的文件创建忽略路由 针对您要忽略的文
  • 切换 kivy 小部件

    我正在使用 Kivy python 库 我定义了两个小部件 当程序运行时 我运行第一个小部件 当按下该小部件按钮时 我希望它消失并被第二个小部件替换 这是两个小部件的 kv uitest kv
  • 确定 MouseListener 中单击的 JPanel 组件。事件处理

    我有一个扩展 JPanel 的类 public class ButtonPanel extends JPanel private label public ButtonPanel label new JLabel waiting for c
  • Cypress 组件测试拦截 getServerSideProps 请求

    使用 cypress 组件测试时无法弄清楚如何拦截 getServerSideProps 做了很多研究和最好的线索链接 https github com cypress io cypress discussions 9328 https g
  • 注册表模式 vs 服务定位器模式 vs 依赖注入容器

    它们之间有什么区别而不是通过键设置和获取数组中的对象吗 class Registry private container array public static function Set name object self container
  • 除了 malloc/free 之外,程序还需要操作系统提供其他东西吗?

    我正在为我正在开发的操作系统设计内核 我实际上将其称为 核心 只是为了有所不同 但它基本上是相同的 如果我无法启动和运行多任务处理 内存管理和其他基本功能 那么操作系统本身的细节就无关紧要了 所以我需要首先解决这个问题 我有一些关于设计 m
  • 如何使用 Java 获取 AWS Glue 客户端

    我正在尝试从用 Java 编写的 Lambda 代码调用 AWS Glue 中的作业 但我无法获得 Glue 客户端 就像我们有这样的 DynamoClient AmazonDynamoDB client AmazonDynamoDBCli
  • 如何在保留空格的同时分割()字符串[重复]

    这个问题在这里已经有答案了 如何拆分一串单词并保留空格 这是代码 String words s split 字符串 s 包含 hello world 代码运行后 words 包含 hello world 理想情况下 它不应该是中间的空字符串
  • awk - 如果为 null,则打印最后一列值并使用默认值

    我正在使用 awk 命令来打印值 对于最后一列 如果没有找到值 我需要它来打印NA 例如 在下面的代码中 当 3 is NULL 我需要打印为NA 无论如何我可以包括一个if isnull条件什么的 awk F print 1 2 3 lo
  • Android 中的 TextView 可以显示数字文本吗?

    嗨朋友们 在我的应用程序中 要求文本值应显示在数字文本格式可以吗TextView 数字时钟如何显示 请提供任何帮助 从this下载字体link http font downloadatoz com font 24267 digital 7
  • 将 Intent 从 BroadcastReceiver 类发送到当前正在运行的活动

    我有一个扩展的类BroadcastReceiver 收到短信后 我想将信息传递到我的主要活动类 以在框中显示文本 如果文本已存在 则追加 public class SmsReceiver extends BroadcastReceiver