02_电话拨号器intent说明

怎么在第一个Activity打开第二个Activity?在一个Activity中打开另外一个Activity,实际上之前已经做过,就是电话拨号器。

package com.itheima.callnewactivity;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void call(View v){
        Intent intent = new Intent();
        //给意图设置一个动作
        intent.setAction(Intent.ACTION_CALL);
        //给意图设置数据
        intent.setData(Uri.parse("tel:"+110));
        //打开打电话的activity
        startActivity(intent);
        
    }

}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="call"
        android:text="@string/hello_world" />

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.itheima.callnewactivity.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>
    </application>

</manifest>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="call"
        android:text="打电话" />

</RelativeLayout>

 

 

 

 系统上层所有应用的源代码,实际上就是跟电话还有短信这些相关的。Browser是浏览器,Launcher2是桌面的这个应用。

 实际上你最开始运行起来就是这个桌面,这个桌面对应的也是一个安卓应用。这个应用它的作用就是把其他的应用跑起来。

Mms是短信的,PackageInstaller是包安装器。咱们装应用的时候都会出来一个界面,这个界面介绍当前你装的东西是什么名字,会用到哪些权限,这个东西就是这个PackageInstaller。

Phone就是打电话的。

TelephonyProvider就是提供跟电话相关的一些信息。内容提供者相关。

Settings  设置的。


每调起一个应用默认都会在All messages(no filters)帮咱们打一个log,就是我调起来的是谁。

ActivityManager,通过它就可以看到我究竟都打开了哪一些应用。

 <activity android:name="OutgoingCallBroadcaster"
                android:permission="android.permission.CALL_PHONE"
                android:theme="@android:style/Theme.NoDisplay"
                android:configChanges="orientation|keyboardHidden">
            <!-- CALL action intent filters, for the various ways
                 of initiating an outgoing call. -->
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="tel" />
            </intent-filter>
            <intent-filter android:icon="@drawable/ic_launcher_sip_call">
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="sip" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="voicemail" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/phone" />
                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
                <data android:mimeType="vnd.android.cursor.item/person" />
            </intent-filter>
        </activity>

它声明了一个CALL_PHONE的权限,所以你调起这个activity的时候必须在你的应用申请对应的权限。

数据以tel开头和scheme对上了。


    <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="tel" />
            </intent-filter>

通过startActivity就可以把当前的这个intent-filter所对应的Activity给它打开。

PHONE这个系统上层的应用的源代码的清单文件是:

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.phone"
        android:sharedUserId="android.uid.phone"
        android:sharedUserLabel="@string/dialerIconLabel"
>

    <original-package android:name="com.android.phone" />

    <protected-broadcast android:name="android.intent.action.SERVICE_STATE" />
    <protected-broadcast android:name="android.intent.action.RADIO_TECHNOLOGY" />
    <protected-broadcast android:name="android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED" />
    <protected-broadcast android:name="android.intent.action.SIG_STR" />
    <protected-broadcast android:name="android.intent.action.ANY_DATA_STATE" />
    <protected-broadcast android:name="android.intent.action.DATA_CONNECTION_FAILED" />
    <protected-broadcast android:name="android.intent.action.SIM_STATE_CHANGED" />
    <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIME" />
    <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIMEZONE" />
    <protected-broadcast android:name="android.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
    <protected-broadcast android:name="android.intent.action.ACTION_MDN_STATE_CHANGED" />
    <protected-broadcast android:name="android.provider.Telephony.SPN_STRINGS_UPDATED" />

    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
    <uses-permission android:name="android.permission.ADD_SYSTEM_SERVICE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.REORDER_TASKS" />
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.STATUS_BAR" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.SET_TIME_ZONE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.DEVICE_POWER" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
    <uses-permission android:name="android.permission.BROADCAST_SMS"/>
    <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.SHUTDOWN" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.BACKUP" />
    <uses-permission android:name="android.permission.USE_SIP" />

    <!-- 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" />

    <application android:name="PhoneApp"
                 android:persistent="true"
                 android:label="@string/dialerIconLabel"
                 android:icon="@drawable/ic_launcher_phone">
            <provider android:name="IccProvider"
                      android:authorities="icc"
                      android:multiprocess="true"
                      android:readPermission="android.permission.READ_CONTACTS"
                      android:writePermission="android.permission.WRITE_CONTACTS" />

        <!-- Dialer UI that only allows emergency calls -->
        <activity android:name="EmergencyDialer"
            android:label="@string/emergencyDialerIconLabel"
            android:screenOrientation="nosensor">
            <intent-filter>
                <action android:name="com.android.phone.EmergencyDialer.DIAL" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity android:name="ADNList" />

        <activity android:name="SimContacts"
            android:label="@string/simContacts_title">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/sim-contact" />
            </intent-filter>
        </activity>

        <activity android:name="FdnList" android:label="@string/fdnListLabel">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/sim-contact" />
            </intent-filter>
        </activity>

        <activity android:name="OutgoingCallBroadcaster"
                android:permission="android.permission.CALL_PHONE"
                android:theme="@android:style/Theme.NoDisplay"
                android:configChanges="orientation|keyboardHidden">
            <!-- CALL action intent filters, for the various ways
                 of initiating an outgoing call. -->
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="tel" />
            </intent-filter>
            <intent-filter android:icon="@drawable/ic_launcher_sip_call">
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="sip" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="voicemail" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/phone" />
                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
                <data android:mimeType="vnd.android.cursor.item/person" />
            </intent-filter>
        </activity>
        <activity-alias android:name="EmergencyOutgoingCallBroadcaster"
                android:targetActivity="OutgoingCallBroadcaster"
                android:permission="android.permission.CALL_PRIVILEGED"
                android:theme="@android:style/Theme.NoDisplay">
            <intent-filter>
                <action android:name="android.intent.action.CALL_EMERGENCY" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="tel" />
            </intent-filter>
            <intent-filter android:icon="@drawable/ic_launcher_sip_call">
                <action android:name="android.intent.action.CALL_EMERGENCY" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="sip" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL_EMERGENCY" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="voicemail" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL_EMERGENCY" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/phone" />
                <data android:mimeType="vnd.android.cursor.item/person" />
            </intent-filter>
        </activity-alias>

        <activity-alias android:name="PrivilegedOutgoingCallBroadcaster"
                android:targetActivity="OutgoingCallBroadcaster"
                android:theme="@android:style/Theme.NoDisplay"
                android:permission="android.permission.CALL_PRIVILEGED">
            <intent-filter>
                <action android:name="android.intent.action.CALL_PRIVILEGED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="tel" />
            </intent-filter>
            <intent-filter android:icon="@drawable/ic_launcher_sip_call">
                <action android:name="android.intent.action.CALL_PRIVILEGED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="sip" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL_PRIVILEGED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="voicemail" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL_PRIVILEGED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/phone" />
                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
                <data android:mimeType="vnd.android.cursor.item/person" />
            </intent-filter>
        </activity-alias>

        <receiver android:name="ProcessOutgoingCallTest" android:exported="false"
            android:enabled="false">
            <intent-filter android:priority="1">
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

        <activity android:name="InCallScreen"
            android:theme="@android:style/Theme.NoTitleBar"
            android:label="@string/phoneIconLabel"
            android:excludeFromRecents="true"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait"
            android:configChanges="orientation|keyboardHidden|uiMode"
            android:exported="false">
        </activity>

        <activity android:name="InCallScreenShowActivation"
            android:permission="android.permission.PERFORM_CDMA_PROVISIONING"
            android:label="@string/phoneIconLabel"
            android:excludeFromRecents="true">
            <intent-filter>
                <action android:name="com.android.phone.InCallScreen.SHOW_ACTIVATION" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <!-- general settings -->
        <activity android:name="Settings" android:label="@string/settings_label">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.settings.DATA_ROAMING_SETTINGS" />
            </intent-filter>
        </activity>

        <!-- networks setting -->
        <!-- service to handle network query requests sent to RIL -->
        <service android:name="NetworkQueryService" />

        <activity android:name="NetworkSetting"
            android:label="@string/networks"
            android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.settings.NETWORK_OPERATOR_" />
            </intent-filter>
        </activity>

        <activity android:name="GsmUmtsOptions"
            android:label="@string/gsm_umts_options">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="CdmaOptions"
            android:label="@string/cdma_options">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="GsmUmtsCallOptions"
            android:label="@string/gsm_umts_options">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="CdmaCallOptions"
            android:label="@string/cdma_options">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="GsmUmtsCallForwardOptions"
            android:label="@string/labelCF"
            android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="GsmUmtsAdditionalCallOptions"
            android:label="@string/labelGSMMore"
            android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="CellBroadcastSms"
            android:label="@string/cell_broadcast_sms">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <!-- fdn setting -->
        <activity android:name="FdnSetting" android:label="@string/fdn">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="EnableFdnScreen" android:label="">
        </activity>

        <!-- SIM PIN setting -->
        <activity android:name="EnableIccPinScreen" android:label="@string/enable_pin">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
            </intent-filter>
        </activity>

        <activity android:name="ChangeIccPinScreen" android:label="@string/change_pin">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
            </intent-filter>
        </activity>

        <activity android:name="GetPin2Screen" android:label="@string/get_pin2"
                  android:windowSoftInputMode="stateVisible">
        </activity>

        <activity android:name="EditFdnContactScreen"
                  android:windowSoftInputMode="stateVisible">
        </activity>

        <activity android:name="DeleteFdnContactScreen"
        android:label="@string/delete_fdn_contact">
        </activity>

        <activity android:name="DataRoamingReenable" android:label="@string/android:dialog_alert_title"
            android:theme="@android:style/Theme.Dialog">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <!-- Data usage and throttling setting -->
        <activity android:name="DataUsage"
            android:label="@string/throttle_data_usage">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <!-- data roaming setting -->
        <activity android:name="RoamingSetting" android:label="@string/roaming">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <!-- call feature setting -->
        <activity android:name="CallFeaturesSetting" android:label="@string/call_settings"
            android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.MAIN" />
                <action android:name="com.android.phone.CallFeaturesSetting.ADD_VOICEMAIL" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <!-- emergency call handler, coordinates emergency calls -->
        <activity android:name="EmergencyCallHandler" android:label="@string/phoneIconLabel"
            android:excludeFromRecents="true"
            android:launchMode="singleInstance">
        </activity>

        <!-- bluetooth headset service -->
        <service android:name="BluetoothHeadsetService">
            <intent-filter>
                <action android:name="android.bluetooth.IBluetoothHeadset" />
            </intent-filter>
        </service>

        <!-- Broadcast Receiver that will process BOOT Complete and launch OTA -->
        <receiver android:name="OtaStartupReceiver" android:exported="false">
            <intent-filter android:priority="100">
                 <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

        <!-- CDMA Emergency Callback Mode -->
        <service android:name="EmergencyCallbackModeService">
        </service>

        <activity android:name="EmergencyCallbackModeExitDialog"
            android:excludeFromRecents="true"
            android:label="@string/ecm_exit_dialog"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.Translucent.NoTitleBar">
            <intent-filter>
                <action android:name="com.android.phone.action.ACTION_SHOW_ECM_EXIT_DIALOG" />
                <action android:name="android.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <receiver android:name="SipBroadcastReceiver">
            <intent-filter>
                <action android:name="com.android.phone.SIP_INCOMING_CALL" />
                <action android:name="com.android.phone.SIP_ADD_PHONE" />
                <action android:name="com.android.phone.SIP_REMOVE_PHONE" />
                <action android:name="android.net.sip.SIP_SERVICE_UP" />
            </intent-filter>
        </receiver>

        <activity android:label="Sip Settings"
                  android:name=".sip.SipSettings"
                  android:launchMode="singleTop"
                  android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.net.sip.NOTIFY" />
            </intent-filter>
        </activity>
        <activity android:name=".sip.SipEditor"
                android:configChanges="orientation|keyboardHidden">
        </activity>
        <activity android:name=".SipCallOptionHandler"
                android:configChanges="orientation|keyboardHidden">
        </activity>

    </application>
</manifest>

 

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7119336.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值