2011-10-01 31 views
5

我想要了解我的應用程序中未接電話和未讀信息的數量。並且我想在用戶點擊計數時打開相關應用程序。如何獲取未接電話和短信統計

現在最大的問題是如何計數?

我在網上搜索,但找不到任何解決方案。

在此先感謝。

回答

22

http://developer.android.com/reference/android/provider/CallLog.Calls.html

看看這個CallLog類。所有你需要的是查詢電話的任何電話,然後提取錯過的一個(或者當你在查詢電話時,在選擇參數中這樣做)。這同樣適用於消息。短信存儲在內容提供商"content://sms/"

然後只是得到查詢返回的光標中的行數。 :)

我希望這可以幫助。

編輯:未接來電:

String[] projection = { CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL, CallLog.Calls.TYPE }; 
     String where = CallLog.Calls.TYPE+"="+CallLog.Calls.MISSED_TYPE;   
     Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, selection,where, null, null); 
     c.moveToFirst();  
     Log.d("CALL", ""+c.getCount()); //do some other operation 
     if(c.getCount() == SOME_VALUE_TO_START_APP_ONE)//...etc etc 

在where子句您數據的選擇設定的條件。在我們的例子中,我們需要輸入等於CallLog.Calls.MISSED_TYPE的所有內容。我們選擇項目的來電者名稱和他的號碼,當然你可以指定更多的信息來查詢,如移動,家庭,工作等號碼的類型。 表達相當於SQL查詢,像:SELECT CACHED_NAME, CACHED_NUMBER_LABEL, TYPE FROM CONTENT_URI WHERE TYPE=MISSED_TYPE

這需要權限被添加到清單

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

用於查詢手機短信ContentProvider:在

Uri sms_content = Uri.parse("content://sms"); 
Cursor c = this.getContentResolver().query(sms_content, null,null, null, null); 
c.moveToFirst(); 
Log.d("SMS COUNT", ""+c.getCount()); //do some other operation 
//Here proceed with the what you wanted 
if(c.getCount() == SOME_VALUE_TO_START_APP_ONE)//...etc etc 

你可以去更深像指定短信類型的內容樹,如:content://sms/sentcontent://sms/inbox,併爲的第二個參數添加投影和選擇方法like,name,person,message的狀態(如Calls示例)。

這需要權限:

<uses-permission android:name="android.permission.READ_SMS"></uses-permission> 
+0

感謝您的回覆。你能指點我一些教程嗎?我很難理解文檔,因爲我是一個真正的NooB:( –

+2

@MayuMayooresan我爲你提供了我爲你寫的例子,希望我的簡短說明足夠清楚。祝你好運。 –

+1

非常感謝:)噢,搖滾:) –

0

因爲我沒有足夠的信譽來回答@Prasad問題評論約

錯誤 - > getContentResolver()是未定義的類型新的Runnable() {}

getContentResolver()是應用程序上下文的一部分,因此如果您在使用onReceive()函數的情況下使用BroadcastReceiver,請使用上下文

@Override 
    public void onReceive(Context context, Intent intent) { 

    context.getContentResolver() 
} 

如果你使用上面的代碼的活動裏面,那麼你可以使用

getApplicationContext().getContentResolver() 

也請務必使用[按Ctrl + Shift + O(O不爲零)組織進口

Key Shortcut for Eclipse Imports

我希望這會幫助你,幫助別人,我希望有更多的,這是不是對我們的社會規則。

相關問題