2011-02-04 2 views
1

Привет, я пытаюсь создать приложение SMS, которое показывает мне SMS Inbox в ListView. Но если я открою это приложение, нет никаких действий. Я вижу только черный экран с именем приложения :(. мой исходный код и скажите мне, где проблема СпасибоSMS INBOX - LISTVIEW

Существует исходный код:.

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

+0

В ОС Android нет SMS-сообщений. – CommonsWare

+0

No Sms inbox? Итак, как я могу получить sms? – Adam

ответ

0

Я предполагаю, что ваш getSMS() ничего не возвращает. Вы можете проверить это, добавив некоторые отладки кода после этой строки:

List<String> msgList = getSMS(); 

Что-то вроде

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

Кажется, что он не возвращает ничего. Вы можете начать с отладки этой конкретной функции: есть ли исключения? добавьте некоторые записи, чтобы увидеть это. Возможно, вы не добавили правильной строки в ваш манифест.

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

Или что-то в этом нет. Вы сами пишете, или это была копия?

+0

Да, вы правы, что ничего не возвращает. Теперь вы можете изменить его? – Adam

+0

Я добавил строку corect в моем манифесте. Это копия, но немного отредактированная ... Я начинаю в android .. Я просто изучаю – Adam

+0

Но есть некоторая ошибка, которую я уже написал: ActivityManager: Warning: Activity not started, его текущая задача была перенесена на передний план – Adam

0

проблема линия «ArrayAdapter адаптер = новый ArrayAdapter (это, R.layout.main, msgList);»

аргумент R.layout.main является ложным, это расположение элемент пользовательского вами или андроида построен пример как android.R.layout.simple_list_item_1

=> изменить R.layout.main -> android.R.layout.simple_list_item_1. succsess 100%

Смежные вопросы