2014-09-01 2 views
1

Я создаю приложение с помощью flash cs 6. Мне нужно отправить sms из моего приложения. Я создал родное расширение, которое отправит sms. Он использует диспетчер sms по умолчанию. Он работает нормально. Но когда я использую его для отправки смс, он предлагает мне сообщение о том, что оно может вызвать сбои на вашем мобильном аккаунте. Есть ли способ отправить sms без этого сообщения? Я слышал, как некоторые приложения спрашивают, может ли приложение отправлять sms или нет в начале установки. И когда пользователь соглашается отправлять sms из приложения, приложение никогда не проговаривает это сообщение. Есть ли способ сделать это ? И я также хочу, чтобы приложение прочитало смс, которые посылают от меня.отправить sms без подсказки и прочитать полученные sms

Я использовал следующий код для отправки смс:

SmsManager smsManager = SmsManager.getDefault(); 
smsManager.sendTextMessage(recipient, null, text, null, null); 

Теперь я могу читать смс с использованием следующего кода:

Uri uri = Uri.parse("content://sms/inbox"); 
Cursor c= context.getActivity().getContentResolver().query(uri, null, null ,null,null); 
c.moveToFirst(); 

String body = c.getString(c.getColumnIndexOrThrow("body")).toString(); 
c.close(); 

Есть ли способ, чтобы получить смс в приложении, когда устройство первым получать смс? Я хочу прочитать sms-отправку только со мной/с сервера.

+0

написать свой код? – Kishan

ответ

0

Вы, наверное, хотите посмотреть на следующие разрешения:

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

Чтобы получить SMS, когда он поступает на устройство, вам нужно настроить приемник и добавить SMS_RECEIVED фильтр намерений:

<receiver android:name="YourSMSReceiverClass" android:exported="true" > 
    <intent-filter android:priority="1000"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

В вашем приемнике вы можете обработать SMS-сообщение для своих нужд:

public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; 
public static final String SMS_EXTRA_NAME = "pdus"; 

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    if (SMS_RECEIVED_ACTION.equals(intent.getAction())) 
    { 
     Bundle extras = intent.getExtras(); 
     if (extras != null) 
     { 
      Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME); 

      for (int i = 0; i < smsExtra.length; ++i) 
      { 
       SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]); 

       String message = sms.getMessageBody().toString(); 
       String address = sms.getOriginatingAddress(); 

       // Here you can add any your code to work with incoming SMS 
      } 
     } 
    } 
} 

Также в вашем ресивере вы можете прекратить отправку SMS-сообщений по телефону:

this.abortBroadcast(); 
+0

благодарит за ответ. Я использую собственное расширение. Я действительно не знаю, как настроить приемник в родном расширении. Насколько я понимаю, при использовании расширения флэш вызывает функцию java, и она вызывает только один раз. Если я установлю функцию приемника, она будет ждать непрерывного sms непрерывно или я должен снова вызвать эту функцию из флэш-памяти? И мне также нравится знать, можно ли отменить отправку sms-процесса, если это заняло слишком много времени? – TheGunners

+0

Вы определяете приемники так же, как в собственном приложении. Вы добавляете класс в свою собственную библиотеку расширений и реализуете BroadcastReceiver, а затем передаете имя класса в приемник как обычно. Единственное, что вам нужно сделать, это сделать родной для работы с as3, что вы можете сделать с помощью статической ссылки на ваш FREContext. – Michael

+0

Я забыл упомянуть, что вы добавили получателя в свои манифестные дополнения вашего дескриптора приложения AIR! – Michael

 Смежные вопросы

  • Нет связанных вопросов^_^