2011-02-04 6 views
1

안녕하세요 저는 SMS 응용 프로그램 마녀를 만들려고 ListView.But에서 SMS받은 편지함을 보여 주려고합니다.이 응용 프로그램을 열면 아무런 조치도 없습니다. 응용 프로그램의 이름이 검은 화면 만 볼 수 있습니다. (. 누군가를 확인할 수 있습니까? 내 소스 코드와 문제가 어디 있는지 말해 주셔서 감사합니다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 OS에는 SMS받은 편지함이 없습니다. – CommonsWare

+0

SMS 수신함이 없습니까? 그럼 내가 어떻게 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

내 manifest.It에 corect line을 추가했습니다. 약간의 수정이있었습니다 ... 나는 안드로이드의 초보자입니다. 방금 배웠습니다. – Adam

+0

하지만 이미 작성한 일부 오류가 있습니다 : ActivityManager : 경고 : 활동이 시작되지 않았습니다. 현재 작업이 전면에 나타났습니다 – Adam

0

getSMS 메소드에서 c.close()을 제거하십시오.

0

문제가 라인 "ArrayAdapter와 어댑터 = 새로운 ArrayAdapter와 (이, R.layout.main, msgList);"입니다

인수 R.layout.main가 false, 당신 또는 안드로이드 내장 예에 의해 레이아웃 항목 정의의 android.Routout.simple_list_item_1

=> R.layout.main -> android.R.layout.simple_list_item_1을 (를) 변경하십시오. succsess 100 %