如何在android中设置用于拨号操作的意图过滤器?

时间:2014-12-29 11:33:56

标签: android android-intent

我正在尝试创建一个简单的拨号盘。我创建了所有这些,现在我喜欢从其他应用程序接收动作拨号意图。

<intent-filter>

       <action android:name="android.intent.action.DIAL" />

       <category android:name="android.intent.category.DEFAULT" />

       <data android:xxxxxx="XXXXXX" />

</intent-filter>

现在我不知道应该用动作过滤器中的数据填充什么。 谁能帮我 ? 提前谢谢。

4 个答案:

答案 0 :(得分:4)

这是应该使用的意图过滤器。

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

我们可以像这样从onCreate方法中读取电话号码。

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


        //start reading here
        Intent intent = getIntent();
        if(intent.getData()!=null){
            Log.d("intent received",intent.getData().toString());
            String phoneNumber = intent.getData().toString(); //contains tel:phone_no
            phoneNumber = phoneNumber.substring(4);
            Log.d("intent received","Received phone number : "+phoneNumber);
                  /// do what you like here
        }else{
            Log.d("intent received","null intent received");
        }
}

答案 1 :(得分:2)

接受的答案对我不起作用。经过一些搜索,我从https://github.com/jdunck/Examples/blob/master/SimpleDialer/AndroidManifest.xml

中找到了这个例子
<activity android:name=".DialerActivity" android:label="@string/title_dialer">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.DIAL" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.CALL_BUTTON" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
   <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:mimeType="vnd.android.cursor.dir/calls" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <action android:name="android.intent.action.DIAL" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="tel" />
    </intent-filter>
</activity>

这对我来说很好。

答案 2 :(得分:0)

<intent-filter> 

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

    </intent-filter>

在java中

Uri number = Uri.parse("tel:"  + edit_text_number);
Intent i = new Intent(Intent.ACTION_DIAL, number);
startActivity(i);

答案 3 :(得分:0)

您必须添加这些意图过滤器 -

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

最重要的是,添加权限 -

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

干杯:)