在android中启动一个调用

时间:2014-03-13 12:33:50

标签: android android-manifest android-broadcast

我正在为我的应用尝试一个自定义的传入和传出呼叫屏幕。两者都是关于同一个屏幕,并根据从广播收到的状态更改按钮。

我可以正常接听来电,但是当我打开我的联系人然后点击号码时拨打电话我的自定义屏幕会打开,但我看不到它正在拨打电话。

我尝试了以下内容:

        String uri = "tel:" + incomingnumber.trim();
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse(uri));
        startActivity(intent);

这只是从默认电话拨号器拨打电话而不显示我的屏幕。

这是我的清单文件:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >
    <activity
        android:name="com.honey.ringer.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.honey.ringer.AcceptCall"
        android:priority="999"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.ANSWER" />
            <action android:name="android.intent.action.DEFAULT" />
            <action android:name="android.intent.action.CALL_PRIVILEGED" />

            <data android:scheme="tel" />
        </intent-filter>
    </activity>

    <receiver
        android:name="com.honey.ringer.PhoneListenerBroad"
        android:priority="999" >
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
    </receiver>
</application>

有人可以帮我修理拨打电话吗?我想通过电话进行定制屏幕吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试将其添加到清单中:

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

此处有更多信息:http://developer.android.com/reference/android/Manifest.permission.html#CALL_PHONE

答案 1 :(得分:0)

您尚未在AndroidManifest.xml文件中定义CALL_PHONE权限

你的清单应该是这样的

<uses-permission android:name="android.permission.CALL_PHONE" /> <!-- permission added!-->
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >
    <activity
        android:name="com.honey.ringer.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.honey.ringer.AcceptCall"
        android:priority="999"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.ANSWER" />
            <action android:name="android.intent.action.DEFAULT" />
            <action android:name="android.intent.action.CALL_PRIVILEGED" />

            <data android:scheme="tel" />
        </intent-filter>
    </activity>

    <receiver
        android:name="com.honey.ringer.PhoneListenerBroad"
        android:priority="999" >
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
    </receiver>
</application>
相关问题