怎么在Ubuntu平台上面读取电话及短信记录(History API)

在Ubuntu平台上面,我们可以使用History API来读取电话本及短信的内容,并使用listview来显示出来。下面我们来展示该怎么做。

1)创建一个基本的QML应用

我们使用Qt Creator来创建一个最基本的QML应用。我们选择使用“App with Simple UI"模版来创建我们的应用。

为了使用History API, 我们必须引入

import Ubuntu.History 0.1

为了能够使我们读取不同的history,我们先来做一个ComboButton。它的设计如下:

            ComboButton {
                id: type
                expanded: false

                text: "Voice"
                ListView {
                    model: typemodel
                    delegate: ListItem.Standard {
                        text: modelData

                        onClicked: {
                            console.log("item is clicked!" + index + " " + name);
                            type.expanded = false;
                            type.text = text;

                            console.log("type is: " + type.text);

                            if ( name === "Voice") {
                                historyEventModel.type = HistoryThreadModel.EventTypeVoice;
                                listView.model = historyEventModel
                            } else if ( name === "Text" ) {
                                historyEventModel.type = HistoryThreadModel.EventTypeText;
                                listView.model = historyEventModel
                            } else if ( name === "Thread") {
                                listView.model = historyThreadModel
                            }

                        }
                    }
                }
            }

这里我们可以参考ComboButton来更加多了解如何使用这个控件。这里,我们提供了三个选项"Voice", "Text" 及“Thread"。同时我们也创建了俩个不同的history
model。

    HistoryEventModel {
        id: historyEventModel
        filter: HistoryFilter {}
        type: HistoryThreadModel.EventTypeVoice
        sort: HistorySort {
            sortField: "timestamp"
            sortOrder: HistorySort.DescendingOrder
        }
    }

    SortProxyModel {
        id: sortProxy
        sortRole: HistoryEventModel.TimestampRole
        sourceModel: historyEventModel
        ascending: false
    }

    HistoryThreadModel {
        id: historyThreadModel        <pre name="code" class="javascript"><span style="white-space:pre">	</span>filter: HistoryFilter {}

sort: HistorySort { sortField: "lastEventTimestamp" sortOrder: HistorySort.DescendingOrder } }


由于一些性能方面的原因的考虑,目前我们必须把filter设置为空,即:

filter: HistoryFilter {}

我们同时也把上面定义的model和我们的ListView一起连接起来:

            ListView {
                id: listView

                width: parent.width
                height: parent.height - type.height

                Component {
                    id: sectionDelegate

                    Text {
                        text: section
                    }
                }

                model: historyEventModel

               delegate:
               ...
            }

目前似乎一切都已经好了。接下来我们来运行我们的应用到手机中。我们会发现在手机中没有任何的history的东西显示。问题出现在哪里呢?

我们开启一个terminal,然后打入如下的命令:

$adb shell

然后再在手机中的命令行输入:

[email protected]:~# grep "DENIED" /var/log/syslog

我们可以看到如下的图片:

显然,我们遇到了一个安全的问题。为了接的这个问题,我们必须在应用中加入它所需要的policy。

我们再重新运行程序。在手机上,我们可以看到如下的画面:

我们再也没有security的问题了。整个工程的源码在如下的地址可以下载:

bzr branch lp:~liu-xiao-guo/debiantrial/history

时间: 2024-07-29 20:34:52

怎么在Ubuntu平台上面读取电话及短信记录(History API)的相关文章

IOS中调用系统的电话、短信、邮件、浏览功能

iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评论, 收藏, 编辑 --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: 调用系统应用 使用系统服务目 录 短信与邮件 通讯录

实现在手机浏览器上面打 电话发 短信 定位的 功能

如果需要在移动浏览器中实现拨打电话,调用sms,发送email等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url链接的方式,实现在Safari ios,Android 浏览器,webos浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能. 1. 打电话 在电话号码前面可以加上 + (加号)表示国际号码.如: 最常用WEB页面JS实现一键拨号的电话拨打功能 例子: 1 <a href="tel:10086">

iOS通过openURL打开原生应用与页面(包括电话,短信,safari等)

[[UIApplication sharedApplication] openURL:url];通过给url不同的值,可以实现调用系统自带 电话/短信/邮箱/浏览器/... 1.调用 电话phone[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://800888"]]; 拨打电话之后不跳转回app[[UIApplication sharedApplication] openURL:[NSURL

和移动电话和短信相连

1.移动web页面自动探测电话号码<meta name="format-detection" content="telephone=no"><meta http-equiv="x-rim-auto-match" content="none"> 2.<a href="tel:">联系电话</a> <a href="sms:">发送

iOS 电话/短信/邮件/UIApplication

1,打电话的三种方式:1?? • 最简单最直接的?方式:直接跳到拨号界?面 NSURL *url = [NSURL URLWithString:@"tel://10010"]; [[UIApplication sharedApplication] openURL:url]; • 缺点电话打完后,不会?自动回到原应?用,直接停留在通话记录界?面 2?? • 拨号之前会弹框询问?用户是否拨号,拨完后能?自动回到原应?用NSURL *url = [NSURL URLWithString:@&

Android小功能实现-sim卡读取,发短信,播放音乐

1.读取sim卡信息 private TelephonyManager tm; tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String sim = tm.getSimSerialNumber(); 需要TelephonyManager 加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 2.发短信 S

APP拨打电话&amp;发短信&amp;发邮件

在移动开发中我们会经常需要调用手机的拨打电话功能.发短信功能和发邮件功能,以下是我总结的方法: //1.打电话 //方法1 最常用方法 NSURL *telUrl = [NSURL URLWithString:"tel://13161906451"]; UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; [webView loadRequest:[NSURLRequest requestWithURL:t

iOS 拨打电话 发短信(sms) 发邮件(mail) 调用自带的浏览器 safari

注意 : 以下需要苹果手机测试(真机测试)           一.拨打电话的两种方式 //拨打电话方式1  (弹出提示是否呼叫,推荐这种) UIWebView*callWebview =[[UIWebView alloc] init]; NSURL *telURL =[NSURL URLWithString:@"tel:10086"]; [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]]; //记得添加到vie

Mac OS X 10.10优胜美地如何完美接管iphone上的电话和短信

自从今年苹果第一次的发布会上毛猫就特别注意这个功能,感觉特别Cool,特别方便.但直到今天毛猫才第一次成功测试出这个功能呀!虽然handoff功能还未测出来,但是觉得在mac上发短信和打电话也已经足够了呢! 以前不成功是因为当时两者蓝牙不能配对问题,后来才发现原来不需要配对啊.直到现在我的iphone6 plus iOS8.1也不能和macbook air OS X 10.10配对成功,和其他网友出现的现象类似,都是能相互看到对方设备名,但是一连接就断开!可能是iphone的蓝牙只能连接耳机之类