android - 如何获取电话号码以及Android用户调用电话的持续时间?

标签 android broadcastreceiver

我需要在他从他的 android 手机调用电话后立即获取电话号码,然后在通话结束时我需要通话时长。

最佳答案

创建一个广播接收器并在接收器 onReceive() 方法中写入以下内容 此接收器返回您通话的最后一条记录,但会延迟一些时间,以便它可以返回当前记录。

Cursor c=context.getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI,null, null, null,android.provider.CallLog.Calls.DATE + " DESC");
     int numberColumn = c.getColumnIndex(android.provider.CallLog.Calls.NUMBER);
    int dateColumn = c.getColumnIndex(
    android.provider.CallLog.Calls.DATE);

    // type can be: Incoming, Outgoing or Missed
    int typeColumn = c.getColumnIndex(android.provider.CallLog.Calls.TYPE);
    int DurationColumn = c.getColumnIndex(android.provider.CallLog.Calls.DURATION);

在你的mainfest文件之后写下

<receiver android:name="Your Receiver">
             <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
</receiver>

在onRecieve 中放这个

Bundle bundle = intent.getExtras();
            Set<String> keys = bundle.keySet();
            for (String key : keys) {
                Log.i("MYAPP##", key + "="+ bundle.getString(key));
                if(bundle.getString(key).equals("IDLE"))
                {
}

}

关于android - 如何获取电话号码以及Android用户调用电话的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9030162/

相关文章:

Android:每秒更新蓝牙rssi

android - 根据偏好的 Intent 接收器

android - 使用 AlarmManager 每 20 秒运行一次 Android 服务不会在从应用程序列表中终止该应用程序时重新启动

android - 应用程序关闭时运行警报

android - 使用 LocalBroadcastManager 注册 BroadcastReceiver 时未调用 onReceive

java - 如何正确实现onFling方法?

java - 将 ISO3 国家/地区代码转换为整个国家/地区名称,Android

java - Eclipse Gradle 插件未安装

android - 如果 moveToFirst() 为 false,是否需要关闭 Cursor?

Android AlarmManager setRepeating 不会以长间隔重复