2011-02-04 53 views
1

你好,我想創建短信應用女巫顯示我ListView.But短信收件箱如果我打開這個應用程序沒有action.I只能看到黑名單的應用程序的名稱:(。有人檢查我的源代碼,並告訴我問題出在哪裏謝謝短信收件箱 - 列表查看

有源碼:?

package sms.five; 

import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

public class Smsfive extends Activity { 
    /** Called when the activity is first created. */ 
    public void onCreate(Bundle savedInstanceState, ListView messages) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ListView list = (ListView) findViewById(R.id.list); 

     List<String> msgList = getSMS(); 

     for(int i = 0; i<msgList.size(); i++) { 
      System.out.println(msgList.get(i)); 
     } 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.main, msgList); 
     list.setAdapter(adapter); 
     list.setOnItemClickListener(new OnItemClickListener() 
     { 
     @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position,long id) { 
     SmsManager m = SmsManager.getDefault(); 
     String destinationNumber=(String) ((TextView)view).getText();    
     m.sendTextMessage(destinationNumber, null, destinationNumber, null, null); 

     }   
     }); 
     } 

    public List<String> getSMS() {  
     List<String> list = new ArrayList<String>(); 
     Uri uri = Uri.parse("content://sms/inbox"); 
     Cursor c = null; 
     try{ 
      c = getApplicationContext().getContentResolver().query(uri, null, null ,null,null); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     try{ 
      for (boolean hasData = c.moveToFirst(); hasData; hasData = c.moveToNext()) { 
       final String address = c.getString(c.getColumnIndex("address")); 
       final String body = c.getString(c.getColumnIndexOrThrow("body")); 
       list.add("Number: " + address + " .Message: " + body); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    c.close(); 
    return list; 
    } 
} 

XML文件(main.xml中):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:id="@+id/widget30" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<ListView 
android:id="@+id/list" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
</ListView> 
</LinearLayout> 

AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="sms.five" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".Smsfive" 
        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> 


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

你確定getSMS()返回了什麼嗎? – Nanne 2011-02-04 10:50:36

+0

Android操作系統中沒有短信收件箱。 – CommonsWare 2011-02-04 13:23:39

回答

0

我假設你的getSMS()沒有返回任何東西。您可以通過此行之後加入一些調試代碼檢查:

List<String> msgList = getSMS(); 

喜歡的東西

Log.d("yourTag","number of items: ".msgList->size()); 

看來,它不返回任何東西。您可能從調試該特定函數開始:是否有任何異常被捕獲?添加一些日誌記錄來查看。也許你沒有在你的清單中添加正確的行

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

或者在該功能中出現其他問題。你是自己寫的,還是它的副本?

0

刪除您的getSMS方法中的c.close()

0

問題是線 「ArrayAdapter適配器=新ArrayAdapter(這一點,R.layout.main,msgList);」

參數R.layout.main是假的,它的版面項目自定義由您或Android例如建like android.R.layout.simple_list_item_1

=>更改R.layout.main - > android.R.layout.simple_list_item_1。 succsess 100%