تحديد ترميز البيانات لرسائل الرسائل القصيرة في Android

StackOverflow https://stackoverflow.com/questions/3555348

سؤال

أنا أعمل على تطبيق باستخدام واجهات برمجة تطبيقات SMS لنظام Android. الطرف المتلقي عبارة عن وحدة مضمنة تدعم فقط الرسائل القصيرة المشفرة 7 بت والسلسلة التي أرسلها تتكون فقط من رموز من هذه الأبجدية بالذات والتي تجعلك تعتقد أن Android سيرسلها مشفرة على أنها 7 بت. لكن هذه ليست هي القضية.

لذلك أنا أبحث عن وسيلة لتحديد الترميز الذي يجب استخدامه. انظر أدناه لما يبدو عليه الكود الخاص بي اليوم. تقوم الطريقة GSM7BitPackedToString بتحويل البايت إلى سلسلة من 7 بت ، أي أن السلسلة تتكون فقط من أحرف متوافقة مع 7 بت ويتم نسخها من واجهة برهجة Android الداخلية.

private static boolean sendMessage(String tel,byte[] message,int septets) {
    SmsManager sms = SmsManager.getDefault();
    if (septets != -1) {
        String a = GsmAlphabet.gsm7BitPackedToString(message,0,septets);
        sms.sendTextMessage(tel, null, a, null, null);
        return true;
    }
    return false;
}

لقد فكرت في الحلول التالية:

  • باستخدام نوع من الطريقة الداخلية ولكن لا شيء من تلك لقد قرأت عن يبدو أنه موجود بعد الآن.
  • إرسال رسالة بيانات ولكن هذا يتطلب رأسًا إضافيًا للمستخدم لا يدعمه الطرف المتلقي أيضًا.

أي مساعدة موضع تقدير :-)

هل كانت مفيدة؟

المحلول

حسنًا ، لم يكن الحل صعبًا كما قد يبدو. كان لدى فئة GSMalphabet التي استعارتها من مشروع Android بعض الأخطاء الترميز. لقد استبدلته بأحدث من مستودعات GIT والآن يبدو أن كل شيء يعمل كما لو كان من المفترض.

الدرس المستفاد: دائماً تحقق من الأشياء التي يجب أن تعمل.

نصائح أخرى

جرب استخدام SmsMessage صف دراسي:

http://developer.android.com/reference/android/telephony/smsmessage.html

خلق SmsMessage اعتراض مع createFromPdu() الطريقة واستخدمها لإرسالها SmsManager.

لم أحاول ذلك. حظا طيبا وفقك الله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top