私はアンドロイドアプリを構築しています。私は現在のユーザーにSMSを送信し、このSMSの内容をBroadcastReceiverで読んでみたいと思います。現時点では、smsは正常に送信されますが、私のBroadcastReceiverは機能しません。 私はmanifest.xmlに右権限を入れなかった。ここで自分宛にSMSを送って受信してください
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
は私の断片のコードです:
public class GetOtpFragment extends Fragment {
private SMSReceiver mSMSreceiver;
private VerificationActivity mActivity;
private EditText mPhoneNumber;
private Button mVerifyButton;
public GetOtpFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = (VerificationActivity) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_get_otp, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Bundle b = getArguments();
mPhoneNumber = (EditText) view.findViewById(R.id.phone_number);
mVerifyButton = (Button) view.findViewById(R.id.verify_phone_number_button);
// I register my receiver
IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
mSMSreceiver = new SMSReceiver();
mActivity.registerReceiver(mSMSreceiver, intentFilter);
// verify phone number
mVerifyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// this works
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(mPhoneNumber.getText().toString(), null, "test", null, null);
}
});
}
@Override
public void onStop() {
super.onStop();
mActivity.unregisterReceiver(mSMSreceiver);
}
}
そして、私BroadcastReceiver:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// never called
Toast.makeText(context, "SMS received", Toast.LENGTH_LONG);
Log.d("---- smsreceiver ---", "in smsreceiver");
}
}
だから私が言ったように、 SMSは実際に送信され、私はSMSアプリでそれを見つけることができますが、通知はありません。事は、私の受取人は決して呼び出されず、ログもトーストもなく、私は理由を知らないということです。 sendTextMessage
は通知を作成しないためですか?
"sendTextMessageは通知を作成しないためですか?" - 'SmsManager'のメソッドのどれも' Notification'sを作成しません。アプリ自体はアプリを発行する責任があります。あなたがあなたのSMSアプリケーションでそれらを無効にしていないならば、あなたは少なくとも着信メッセージのための 'Notification'を得ているべきです。あなたは正しい番号を持っていますか?あなたは正常にあなた自身SMSアプリケーションからのメッセージを送ることができますか?あなたは、あなたのSMSアプリで発信メッセージ、または着信メッセージを見ていますか? Androidのどのバージョン、どの種類の端末を試していますか? –
今、私はアンドロイドスタジオで仮想デバイスを使用しています。はい、メッセージを送信すると、着信メッセージの通知はありません。しかし、その後、私はSMSアプリケーションに入ると、メッセージは本当にここにあります。事は私のBroadcastReceiverは 'sendTextMessage'で送られたSMSを捕まえませんが、他のSMSを捕まえます、私は理解しません。 – pchmn
SMSアプリケーションで送信メッセージが表示されている場合は送信されており、API 4.4以降で実行されているため、「SMS_RECEIVED」ブロードキャストを中止できません。これは、着信メッセージやその「通知」を受け取っていないという事実と共に、あなたがエミュレータの正しい番号に送信していないことを意味します。私は実際のデバイスでSMSだけをテストするので、エミュレータがそれをどのように処理するかはわかりません。あなたのレシーバーが他の着信メッセージのために働くならば、おそらくOKだと思います。実際のデバイスであなた自身に送信することをテストできますか? –