2012-02-15 3 views
2

マニフェストファイルにレシーバを登録しました。次のSMSにメッセージがアプリケーションに保存されているかどうかを確認します。しかし、私は受信機のファイルにアクセスするのが難しいです。私はBroadcastReceiverを拡張しているようだ、私はファイルを読むことができません。しかし、私は確信していません。誰かが私を助けることができる方法。以下のコードブロードキャストレシーバのファイルを読み取る

public class BootReceiver extends BroadcastReceiver { 


    static final String ACTION = "android.provider.Telephony.SMS_RECEIVED"; 

    String password; 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     try { 
      InputStream in = openFileInput("string.txt"); 
      if (in != null) { 
       InputStreamReader tmp = new InputStreamReader(in); 
       BufferedReader reader = new BufferedReader(tmp); 
       String str; 
       StringBuilder buf = new StringBuilder(); 
       while ((str = reader.readLine()) != null) { 
        buf.append(str); 
       } 
       in.close(); 
       password = buf.toString(); 
      } 
     } 
     catch (Throwable t) { 
      ; 
     } 


     if (intent.getAction().equals(ACTION)) { 

      Intent initial = new Intent(context, SMSActivity.class); 
      initial.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(initial); 
     } 

    } 

} 
+0

uエラーが発生しました???? – Farhan

+0

はい、openFileInputに関するエラーがあります。メソッドOpenFileInout(String)は、タイプがBootReceiverの場合、未定義です – jedichen

答えて

2

代わりのopenFileInput("string.txt");context.getApplicationContext().openFileInput("string.txt");を使用してみてくださいです。

+0

ありがとうございます!私はまだそれが働く理由を知らない。読み取りと書き込みの機能はコンテキストでのみ定義されていますか?この種のことを説明しているインターネット上の参考資料はありますか? – jedichen

+0

はい、アンドロイドのドキュメントを参照してください。これはAndroidデベロッパーにとってはよくある誤解です。 Javaの中にどこかに定義されていない単一のメソッドは存在しません。したがって、アクティビティで使用した 'findViewById'や 'openFileInput'のようなメソッドは実際には' Context'で定義され、すべてのアクティビティはコンテキストです。こちらをご覧ください:http://developer.android.com/reference/android/app/Activity.html –

関連する問題