当前位置: 首页 > 知识库问答 >
问题:

替换默认的手机应用程序

太叔超英
2023-03-14

我正在尝试替换默认的android电话呼叫应用程序。更具体地说,我希望在每次执行呼叫操作时启动我的自定义电话呼叫屏幕。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mynumbers">
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:label="">

        <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.DIAL" />
                <action android:name="android.intent.action.CALL_BUTTON" />
                <action android:name="android.intent.action.CALL_PRIVILEGED" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.LAUNCHER" />
                <data android:scheme="tel"/>
            </intent-filter>
        </activity>

        <activity
            android:name=".NumberManagementActivity"
            android:parentActivityName=".MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>

        <activity
        android:name=".CallActivity"
            android:parentActivityName=".MainDialerActivity"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainDialerActivity" />
            <intent-filter>
                <action android:name="android.permission.CALL_PHONE" />
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MainDialerActivity"
            android:parentActivityName=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.DIAL" />
                <action android:name="android.intent.action.CALL_BUTTON"/>
                <action android:name="android.intent.action.CALL_PRIVILEGED" />
                <action android:name="android.permission.CALL_PHONE"/>
                <data android:scheme="tel"/>
            </intent-filter>
        </activity>

        <receiver
            android:name=".PhoneCallListener">
            <intent-filter android:priority="1">
                <action android:name="android.intent.action.PHONE_STATE" />
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
        </receiver>
        <!-- Incoming call activity -->
        <activity
            android:name=".IncomingCallActivity"
            android:configChanges="orientation"
            android:label="@string/title_activity_fullscreen"
            android:theme="@style/IncomingCallTheme">
            <intent-filter>
                <action android:name="android.intent.action.ANSWER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name=".DefaultConfigurationActivity"
            android:parentActivityName=".MainActivity">
        </activity>
    </application>
</manifest>

共有1个答案

宋瀚海
2023-03-14

我在谷歌上找遍了,终于找到了解决方案。现在我可以用我自定义创建的应用程序替换默认电话(呼叫)应用程序,如果您在清单文件中添加这些权限,您将能够在->电话菜单->设置->应用程序->默认应用程序(右上角的菜单项)->默认呼叫应用程序中更改您的应用程序作为默认呼叫应用程序,并最终选择您的应用程序

以下是权限列表

<uses-permission
    android:name="android.permission.CALL_PRIVILEGED"
    tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission
    android:name="android.permission.MODIFY_PHONE_STATE"
    tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
<uses-permission android:name="com.android.voicemail.permission.READ_WRITE_ALL_VOICEMAIL" />
<uses-permission
    android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"
    tools:ignore="ProtectedPermissions" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!-- allow broadcasting secret code intents that reboot the phone -->
<uses-permission
    android:name="android.permission.REBOOT"
    tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!--
 This tells the activity manager to not delay any of our activity
 start requests, even if they happen immediately after the user
 presses home.
-->
<uses-permission
    android:name="android.permission.STOP_APP_SWITCHES"
    tools:ignore="ProtectedPermissions" />
 类似资料:
  • 我试图在登录过程中添加用户ip验证。如果用户的ip地址不在数据库中,应用程序应该拒绝身份验证。 问题:根据下面的设置,Auth.AuthenticationProvider()并没有替换默认的DaoAuthenticationProvider,而是将UserIpAuthenticationProvider添加为列表中的第一个AuthenticationProvider。 在用户名/密码组合不正确的

  • 问题内容: 是否可以替换WCF的默认JSON序列化(我目前正在测试行为),并作为MIME类型传递。特别是,我不喜欢默认情况下每个属性都是键/值对,例如: 我仅将服务用于启用JSON的端点(使用jQuery + WCF请求数据)。 问题答案: 您可以使用消息格式化程序来更改用于处理JSON的序列化程序。https://docs.microsoft.com/zh- cn/archive/blogs/c

  • 我只是想知道有没有什么方法可以为log4j中的属性替换提供默认值呢? 我想在Java系统属性中传递文件路径,然后与“${env:MySystemProperty}”一起使用。但如果开发人员忘记设置此属性怎么办?那么我希望在log4j2.xml中定义一些有意义的默认值。 你知道如何实现这个功能吗? 编辑: 环境替换对我不起作用: standalone.conf log4j2.xml 我可以在wild

  • 我想用SafetyNet验证电话号码Firebase,而不是重新CAPTCHA验证。我在这里遵循Firebase留档:https://firebase.google.com/docs/auth/android/phone-auth 在谷歌API控制台中,我启用了Android设备验证API 在Firebase控制台中,我添加了SHA-256指纹 重新安装谷歌服务。json并将其添加到项目中 它总是

  • 我想把系统默认的表情符号转换成Twitter的表情符号。我在我的web应用程序中实现了一个emoji选择器,当我从emoji托盘中选择任何emoji时,该emoji将基于系统操作系统出现在文本区中。如果我使用windows,那么emoji就会出现在基于windows的文本区中,如果我使用Linux,那么它就会出现在基于Linux的文本区中。 但我想要的是,无论操作系统如何,Twitter表情符号都