2016-10-07 8 views
-2

これはMainActivity.java次のとおりです。SMS受信時にトーストする放送受信機を使用するにはどうすればよいですか?

package tagit.aj.com.broadcastreceiverforsms; 

import android.content.Intent; 
import android.content.IntentFilter; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

この放送受信機のonReceive方法を含むMyReceiverクラス。ここで使用されているメソッドの1つは「廃止予定」ですが、テストで問題は発生しないと想定しています。

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     tools:context="tagit.aj.com.broadcastreceiverforsms.MainActivity"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Hello World!" /> 
    </RelativeLayout> 

そしてAndroidManifestファイルは次のとおりです:

package tagit.aj.com.broadcastreceiverforsms; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.util.Log; 
import android.widget.Toast; 

public class MyReceiver extends BroadcastReceiver { 

    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context,"IncomingSms",Toast.LENGTH_SHORT).show(); 

     // Retrieves a map of extended data from the intent. 
     final Bundle bundle = intent.getExtras(); 

     try { 
      if (bundle != null) { 
       Object[] pdus = (Object[]) bundle.get("pdus"); 

       for (int i = 0; i < pdus.length; i++) { 

        SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdus[i]); 

        String phoneNumber = messages.getDisplayOriginatingAddress(); 
        String phone = phoneNumber; 
        String stringMessage = messages.getDisplayMessageBody(); 

        int duration = Toast.LENGTH_LONG; 
        Log.i("Broadcasting", "Number" + phone + "Message" + stringMessage); 
        Toast toast = Toast.makeText(context, "senderNum: " + phone + ", message: " + stringMessage, duration); 
        toast.show(); 

       } // end for loop 
      } // bundle is null 
     } catch (Exception e) { 
      Log.e("SmsReceiver", "Exception smsReceiver" + e); 
     } 
    } 
} 

XMLレイアウトがある

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="tagit.aj.com.broadcastreceiverforsms"> 
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
    <uses-permission android:name="android.permission.READ_SMS"></uses-permission> 
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name=".MyReceiver" 
      android:enabled="true" 
      android:exported="true"> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

この問題が発生している理由を私に提供してください、そして溶液(もしあれば)。 Android KitKatでこのアプリを実行しています。

+0

でSMSプロバイダで加えられた変更を、機能していないということだと思います。 – Bryan

+0

@ブライアン...私の問題は、コードが動作していないことです –

+0

*あなたのコードについては何も問題はありませんか?コードが何を期待しているのですか?代わりに何をしていますか?あなたは幸いでした@Levはあなた自身と同様の問題を抱えていたようで、ソリューションを提供することができました。あなたが[mcve]を提供しないと、これは必ずしも当てはまりません。問題が解決した場合は、回答を受け入れる必要があります。 – Bryan

答えて

0

私は彼の問題は彼のコードは、あなたが実際にあなたの問題が何であるかを説明したことがないため、アンドロイド4.4

SMS Provider in Android 4.4

+0

はい兄弟...あなたは正しいと推測しました。助けてくれてありがとうございます –

+0

よろしくお願いします。多分それが他の人に役立つように答えを受け入れるべきです:) – Lev

関連する問題