Можно ли открывать текстовые сообщения непосредственно в стороннем приложении (Android)? - PullRequest
0 голосов
/ 11 января 2012

когда отправлено текстовое сообщение, допустим, приложение myApp откроет его в приложении текстового сообщения получателя по умолчанию. но я хочу контролировать, как это выглядит для получателя (например, изменение цвета). Есть ли способ отправить текст и прочитать его в собственном приложении myApp? Или определите, что оно было отправлено из «myApp», и импортируйте сообщение в «myApp».

1 Ответ

1 голос
/ 11 января 2012

уверен, что вы можете получать сообщения, чтобы широковещательный приемник для входящих сообщений появлялся каждый раз при поступлении сообщения, запускайте свою деятельность, которая отображает сообщение ...

public class SMSApp extends IntentReceiver {
    private static final String LOG_TAG = "SMSApp";

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

    public void onReceiveIntent(Context context, Intent intent) {
        if (intent.getAction().equals(ACTION)) {
            StringBuilder buf = new StringBuilder();
            Bundle bundle = intent.getExtras();
            if (bundle != null) {
                SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
                for (int i = 0; i < messages.length; i++) {
                    SmsMessage message = messages[i];
                    buf.append("Received SMS from  ");
                    buf.append(message.getDisplayOriginatingAddress());
                    buf.append(" - ");
                    buf.append(message.getDisplayMessageBody());
                }
            }
           //start you messages activity 

        Intent i = new Intent();
        i.setClassName("com.test", "com.test.myMessagesAcivity");
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        //prepare message text to be sent to the activity via bundle 
        Bundle bundle = new Bundle();
        bundle.putString("message", but.toString());
        i.putExtras(bundle);
        context.startActivity(i);


        }
    }


}

и в вашем файле манифеста добавьте эти разрешения

<uses-permission android:id="android.permission.RECEIVE_SMS" />

<uses-permission android:name="android.permission.SEND_SMS"/>

и этот получатель

<receiver class="SMSApp">

            <intent-filter>

                <action android:value="android.provider.Telephony.SMS_RECEIVED" />

            </intent-filter>

        </receiver>

и для отправки смс из вашего приложения

используйте этот метод

public void eb3atSMS(String phoneNumber, String message)
    {        

        PendingIntent pi = PendingIntent.getActivity(this, 0,
            new Intent(this, **DummyClasshere.class**), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, pi, null);        
    }    
...