2016-09-23 17 views
1

プロジェクトの場合は、SIM搭載のタブレットでSMSアプリケーションを作成する必要があります。私はSMSを送信してSMSを受信することができますが、コンテンツリゾルバーを使用して「content:// sms/inbox」にアクセスすると、カーソルにデータがありません。誰が問題になるのか考えていますか?ここでAndroidの空のSMS受信トレイ(タブレット)

が受信トレイからのSMSを読むために私のコードです:

private List<Sms> getSms() { 
    List<Sms> smsList = new ArrayList<Sms>(); 
    Uri uri = Uri.parse("content://sms/inbox"); 
    Cursor c= mContext.getContentResolver().query(uri, null, null ,null,null); 
    Log.d("stackoverflow", "Number of sms: " + c.getCount()); 
    while(c.moveToNext()) { 
     Sms sms = new Sms(c.getString(c.getColumnIndexOrThrow("address")).toString(), c.getString(c.getColumnIndexOrThrow("body")).toString()); 
     smsList.add(sms); 
    } 
    c.close(); 
    return smsList; 
} 

戻って上記のコードでのログインは、私がちょうどタブレットにSMSを送信した場合でも、ゼロ。

ありがとうございます!

答えて

1

コメントやデバイスで実行したテストで収集された情報から、実際に問題はないようです。新しく空のSMSプロバイダを使い始めました。当時はデフォルトのSMSアプリがインストールされていなかったため、受信メールを受信トレイに書き込むアプリがなかったため、一部のメッセージを受信して​​も結果が返ってこなかったのです。あなたのアプリケーションは、送信メッセージと受信メッセージの両方の保存を処理する必要があるようです。

SMSプロバイダへの書き込みアクセス権を取得するには、アプリがデバイスのデフォルトのメッセージングアプリである必要があります。通常、デフォルトのアプリは大量のものを処理する必要がありますが、SMSを処理するだけのカスタムアプリケーションを作成しているので、単にデフォルト機能として「提示」するだけで逃げることができます。 This answerは、お使いのアプリをデフォルトとして選択するための最小要件を詳しく説明しています。マニフェストにすべてのものが含まれているという単純な問題です。

それ以外では、適切なクエリとプロバイダへの挿入が必要です。あなたはその質問のサンプルクエリを持っていて、挿入の簡単な例はthis postにあります。

今後デフォルトアプリのさらなる機能を実装する場合は、事実のへのリンクを残して、KitKatで導入されたSMS APIの変更を参照してください。

Getting Your SMS Apps Ready for KitKat

関連する問題