2011-02-04 4 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

私のマニフェストにcorectlineを追加しました。コピーされていますが少し編集されています...私はアンドロイドの初心者です。私はちょうど学んでいます – Adam

+0

しかし、私はすでにそれを書いているいくつかのエラーがあります:ActivityManager:現在のタスクが前面に表示されている – Adam

0

getSMSメソッドでc.close()を削除します。

0

問題はライン "ArrayAdapterアダプタ=新しいArrayAdapter(これ、R.layout.main、msgList);" である

引数R.layout.mainが偽である、それはあなたやAndroid建ての例でレイアウト項目のカスタムですandroid.Routlay.simple_list_item_1

=> R.layout.main - > android.R.layout.simple_list_item_1のように変更します。 succsess 100%

関連する問題