接到来电时如何调用活动。

2023-12-01

大家好,我想在默认来电活动上调用我自己的活动。我已经使用广播接收器完成了此操作,我在接到来电时调用我的活动。但当我第二次接到来电时,它第一次工作正常,然后默认来电活动将超过我的活动。我不知道问题是什么,有人可以帮助我吗..

显现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.satish.service"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <receiver
        android:name="MyCallReceiver"
        android:enabled="true" >
        <intent-filter android:priority="10">
            <action android:name="android.intent.action.PHONE_STATE" >

            </action>
        </intent-filter>
    </receiver>
    <receiver
        android:name="TestReceiver"
        android:enabled="true" >
        <intent-filter android:priority="10">
            <action android:name="jason.wei.custom.intent.action.TEST" >
            </action>
        </intent-filter>
    </receiver>

    <activity
        android:name="CallActivity"
        android:clearTaskOnLaunch="true"
        android:launchMode="singleTask" >
        <intent-filter android:priority="1000"></intent-filter>
    </activity>
</application>
</manifest>

Java代码:

public class MyCallReceiver extends BroadcastReceiver{
 public static final String CUSTOM_INTENT = "jason.wei.custom.intent.action.TEST";
Context context = null;
 private static final String TAG = "Phone call";



public void onReceive(Context context, Intent intent) {

    Bundle extras = intent.getExtras();
    if (extras != null) {
        String state = extras.getString(TelephonyManager.EXTRA_STATE);
        Log.w("DEBUG", state);
        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {

                    Intent i = new Intent();
                    i.setAction(CUSTOM_INTENT);
                    context.sendBroadcast(i);

        }
    }
}
}


public class TestReceiver extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(MyCallReceiver.CUSTOM_INTENT)) {
        System.out.println("GOT THE INTENT");
        context.startActivity(new Intent(context, CallActivity.class)
                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
    }
}
}

public class CallActivity extends Activity implements OnClickListener{
private ITelephony telephonyService;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    setTheme(android.R.style.Theme_Dialog);
    ((Button)findViewById(R.id.call)).setOnClickListener(this);
    ((Button)findViewById(R.id.end)).setOnClickListener(this);
    TelephonyManager telephony = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);  

      try {
           Class c = Class.forName(telephony.getClass().getName());
           Method m = c.getDeclaredMethod("getITelephony");
           m.setAccessible(true);
           telephonyService = (ITelephony) m.invoke(telephony);
          } catch (Exception e) {
           e.printStackTrace();
          }
}

@Override
public void onClick(View arg0) {
    switch (arg0.getId()) {
    case R.id.call:

        telephonyService.answerRingingCall();
        break;

    case R.id.end:
        telephonyService.endCall();
        finish();
        break;

    default:
        break;
    }
}
}

实际上,完整的代码是我在上面发布的,只需替换下面的代码

public class TestReceiver extends BroadcastReceiver{

public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(MyCallReceiver.CUSTOM_INTENT)) {
    System.out.println("GOT THE INTENT");
    context.startActivity(new Intent(context, CallActivity.class)
            .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}
 }

用下面的代码

 public class TestReceiver extends BroadcastReceiver{

@Override
public void onReceive(final Context context, Intent intent) {
    if (intent.getAction().equals(MyCallReceiver.CUSTOM_TEST_INTENT)) {
        System.out.println("GOT THE INTENT");
        final String mobileNumber = intent.getExtras().getString("number");
        Thread thread = new Thread(){
            private int sleepTime = 400;

            @Override
            public void run() {
                super.run();
                try {
                    int wait_Time = 0;

                    while (wait_Time < sleepTime ) {
                        sleep(100);
                        wait_Time += 100;
                    }
                }catch (Exception e) {
                    Toast.makeText(context,
                            "Error Occured Because:" + e.getMessage(),
                            Toast.LENGTH_SHORT).show();
                }
                finally {

                }

                context.startActivity(new Intent(context, CallActivity.class).putExtra("number", mobileNumber)
                        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
            }
        };
        thread.run();
    }
}
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接到来电时如何调用活动。 的相关文章

  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 在 ViewPager Fragments 中使用 Master/Detail 模板(下载链接)

    工作代码 https github com lukeallison ViewPagerMasterDetail https github com lukeallison ViewPagerMasterDetail Android 主 详细流
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 是否可以将处理(java 3d)中的窗口附加到像面板一样的摆动单元中?

    我想将另一个窗口附加到现有的窗口中JFrame or JComponent或者什么 有什么办法可以做到吗 编辑 不 当我的意思是正如标题所说 攻击a加工 显示窗口 处理基本上是在 java 中使用 3d 进行操作并可视化 3d 窗口 每当运
  • 如何使用 JavaScript 获取整个文档的高度?

    有些文档我无法获取文档的高度 将某些内容绝对放置在最底部 此外 填充底部似乎在这些页面上没有任何作用 但在高度将返回的页面上起作用 相关案例 http fandango com http paperbackswap com 方丹戈jQuer
  • C# 使用 SMO 以编程方式创建数据库

    我正在尝试创建数据库 但创建后无法连接到它 服务器是Microsoft SQL Server 2008并使用 Net 4 5 我们使用 SMO 创建数据库 但我们通常使用Dapper连接并查询数据库 这是我到目前为止的代码 它有效 Syst
  • WebAPI OAuth 注销 - 如何删除令牌 Cookie?

    我有一个带有 OAuth 登录配置的 WebAPI 如下所示 app UseOpenIdConnectAuthentication new OpenIdConnectAuthenticationOptions ClientId client
  • 如何找到与正方形周长相交的 Voronoi 图的悬垂线的交点?

    我试图通过查找与定义的正方形周长相交的悬垂多边形线的交点来更新 Voronoi 的交点数组 我希望能够重新创建一个新的 Voronoi 交点数组 该数组应该用相交点替换那些悬垂点 下面是我为实验创建的一些代码 function grainn
  • 使用 iTextSharp 将图像转换为 PDF 并保留剪切路径

    我们希望以编程方式将图像批量转换为 PDF 到目前为止 我们似乎将使用 iTextSharp 但我们在使用剪切路径的 JPG 图像时遇到问题 我们在测试中使用以下代码 using FileStream fs new FileStream o
  • 删除 Postgresql 中连续的重复行

    我有一个包含 3 列 id 金额 时间 的表 该表根据id升序排列 我想删除除第一个之外在金额列中具有相同值的所有连续行 eg id 12 15 16 17 19 22 amount 555 546 546 53 53 500 time A
  • 通用Web表单的数据库设计

    我想构建一个通用网络表单的后端 其中包含用户可以回答的问题 问题有多种类型 普通 文本问题 通过简单的文本字段回答问题 Example 一般个人信息 例如姓名 文本区域问题 相同 但有更多空间来写答案 Example 您要添加的更多信息 框
  • 通过 Odoo 中的代码发送电子邮件时出错

    我创建了一个通过单击模块 linh warehoues 中的按钮 发送电子邮件 来发送电子邮件的函数 但出现以下错误 关系 mail thread 不存在 我实在不明白这是什么意思 我还检查了 mail thread py 中存在 mail
  • if 语句中的 getline

    从我读到的来看 getline 在布尔上下文中使用会返回隐式转换为void 我在网络上没有找到任何真正引用此声明的地方 它到处都说隐式转换不存在 并且在布尔上下文中指针应该是相同类型的 并且如果ptr 0 than 0转换为指针类型ptr
  • 检查嵌套字典内的成员资格

    这是此问题的后续问题 Python DictReader 跳过缺少列的行 事实证明我很愚蠢 并且使用了错误的 ID 字段 顺便说一句 我在这里使用的是 Python 3 x 我有一个员工字典 由字符串 directory id 索引 每个值
  • 获取Xamarin图库图像的路径?

    我正在尝试获取图库图像的路径 我正在获取存储在内部存储中但不是外部存储中的图像的路径 我还启用了已授予的读写存储和相机访问权限 这是我的代码 void ChoosePhoto try var imageIntent new Intent i
  • PHP 不区分大小写的 in_array 函数

    使用时是否可以进行不区分大小写的比较in array功能 因此 使用这样的源数组 a array one two three four 以下查找都将返回 true in array one a in array two a in array
  • NHaml 可以用作通用模板引擎吗? (MVC 之外)

    我见过很多人喜欢在 ASP NET MVC 中使用 NHaml 视图引擎 但我想知道 NHaml 是否可以用作 NET 中的通用模板引擎 我想在 ASP MVC 视图引擎环境之外从控制台应用程序使用 NHaml 或者生成 HTML 电子邮件
  • VS2012 - 服务器/数据库资源管理器中未显示“创建表”或“显示表数据”菜单选项[重复]

    这个问题在这里已经有答案了 可能的重复 让 Sql Server Data Tools 与 Visual Studio 2012 Express 候选版一起使用 我已经安装了 VS 2012 for Web 和 SQL Server 201
  • 正则表达式:匹配除特定模式之外的所有内容

    我需要一个能够匹配所有内容的正则表达式but以特定模式开头的字符串 具体而言index php以及接下来的内容 例如index php id 2342343 正则表达式 匹配所有内容but a string starting with a
  • laravel Eloquent ORM 多表插入

    我如何使用 laravel Eloquent ORM 关系发出单个请求来插入多个表 表1 用户 id name email 表 2 职位 id user id content 表 3 图像 id user id post id 图片名称 关
  • 在 powershell 中复制文件同时保留文件夹结构的正确方法是什么?

    我似乎永远无法把这件事做好 我有一个现有的文件夹c MyApps Websites MySite已经有一个正在运行的现有网站 我已经下载了位于以下的最新版本c temp MySite artifacts 当我尝试运行这个时 source c
  • 一个人的补足是一个现实世界的问题,还是一个历史问题?

    另一个问题询问如何确定 C 中的奇数 偶数 并且惯用的 x 1 方法被正确标记为损坏基于补语的C 标准允许的系统 系统真的存在于计算机博物馆之外的 现实世界 中吗 我从 20 世纪 70 年代就开始编码 而且我很确定我从未遇到过这样的野兽
  • 接到来电时如何调用活动。

    大家好 我想在默认来电活动上调用我自己的活动 我已经使用广播接收器完成了此操作 我在接到来电时调用我的活动 但当我第二次接到来电时 它第一次工作正常 然后默认来电活动将超过我的活动 我不知道问题是什么 有人可以帮助我吗 显现