easyDelphi Q&A
+5 تصويتات
102 مشاهدات

لدينا هذا الكود هنا لأرسال رسالة نصية قصيرة في نظام الأندرويد لكنه مع الأسف إن كان الهاتف به شريحتين فإن الرسالة تذهب مرتين أي من كل شريحة تذهب رسالة :

uses
 ....
{$IFDEF ANDROID},
  FMX.Helpers.Android,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Net,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.Telephony,
  Androidapi.Helpers {$ENDIF};

 ......

procedure TFrmMain.Btn_SendSMSClick(Sender: TObject);
{$IFDEF ANDROID}
var
  SMS_Manager: JSmsManager;
  SMS_To: JString;
  Target_Number, MessageStr: string;
{$ENDIF}
begin
{$IFDEF ANDROID}
  MessageStr := Memo_SMS.Text;
  Target_Number := Edt_PhoneNumber.Text;
  SMS_Manager := TJSmsManager.JavaClass.getDefault;
  SMS_To := StringToJString(Target_Number);
  SMS_Manager.sendTextMessage(SMS_To, nil, StringToJString(MessageStr), nil, nil);
{$ENDIF}
end;

لقد بحثت مطولا عن الموضوع و لكن يبدو أن المشكل لا يزال معلقا .... مع الرغم من أني قد وجدت إجابات في نفس السياق و لكن بلغة الجافا هنا .

و شكرا.

سُئل في تصنيف Delphi بواسطة (12,070 نقاط) | 102 مشاهدات
 
ما هو اصدار android sdk  في الهاتف ؟
لديا هاتف OPPO F1s بإصدار 5.1 كما أنا نسخة الديلفي هي berlin update 2 .

1 إجابة واحدة

+4 تصويتات

 رابط تحميل البرنامج كاملا مع الكود سورس هنا    الباسورد لفك الضغط هو "EasyDelphi.com/qa"  من دون "" ويرجى إستعمال الوينرار نسخة 5 فما فوق.

أما فيما يخص إختيار الشريحة فقد وجدت أسلوبا آخر قد يفي بالغرض في بعض الأحيان و لكنه يبقى مجرد وسيلة أو حل مؤقت ريثما نجد مع بعض الحل الكامل لهذه المشكلة و التي بقدر ما هي بسيطة هي الأن جد معقدة ...

المهم الحل المؤقت هو كما يلي:

  uses    
   {} $ IFDEF for ANDROID Androidapi.Helpers, 
    Androidapi.JNI.JavaTypes, 
    Androidapi.JNI.GraphicsContentViewText, 
    FMX.Platform.Android, 
    Androidapi.JNI.Telephony, 
    Androidapi.JNI.Net, {$ ENDIF} 
    System.NetEncoding ; 


// send text messages, sent directly Andrew system, not SMS 
   {} $ IFDEF for ANDROID 
Procedure SendSMS (phoneNumber, smsString: String); 
var 
  J: JSmsManager; 
  sentIntent: JArraylist; 
the begin 
  J: = tjsmsmanager.Create; // Create Mobile SMS 
  //Send long SMS content, parameter one: mobile phone number, parameter two: nil, parameter three: mobile phone content 
  j.sendMultipartTextMessage(StringToJString(phoneNumber), nil, 
  j.divideMessage(StringToJString(SMSstring)), sentIntent, Nil) 

;


// Activate Intent to execute 
function LaunchActivity(const Intent: JIntent): Boolean; overload; 
var 
  ResolveInfo: JResolveInfo; 
begin 
  ResolveInfo := SharedActivity.getPackageManager.resolveActivity(Intent, 0); 
  Result := ResolveInfo <> nil; 
  if Result then // Determine whether to obtain the interface 
    SharedActivity.startActivity (Intent); // Execute 
end; 

// Create a mobile phone SMS send 
procedure CreateSMS (const Number, Msg: string); 
var 
  Intent: JIntent; 
  URI: Jnet_Uri; 
begin 
  URI: = StrToJURI ( Format('smsto:%s', [Number])); //Mobile number 
  // Create and send SMS class 
  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, URI); 
  //SMS content
  Intent.putExtra(StringToJString('sms_body'), StringToJString(Msg)); 
  //Go to 
  LaunchActivity(Intent); 
end; 
{$EndIF}


هذا الكود هو مقتبس من أحد المواقع الصينية و قد يفي بالغرض ....

أما فيما يخص الخطأ الذي أشرت إليه غي سؤالي عن إرسال الرسالة مرتين (بمعنى من كل شريحة تذهب رسالة) فهذا كان خطأي أنا بحيث كنت أرسل الرسائل من الشريحة واحد إلى الشريحة إثنان و كان يظهر لي رسالتان ولكني لم أكتشف الفرق فهاتفي هو أوبو و الذي يحمل النسخة خمسة واحد لنظام الأندرويد و لكته مختلف جذريا عن نظام الأندرويد و يوازي في ذلك نظام الأيفون ..... المهم الحمد لله لأنني إكتشفت الخطأ و الكود السابق هو سليم 100 بالمائة .

وفي الأخير في إنتظار إكتمال الحل فيما يخص كيفية الأختيار للشريحة قبل الأرسال أدعكم تكتشفون ما نشرته لتوي و شكرا.

 

تم الرد عليه بواسطة (12,070 نقاط)
عُدل بواسطة

اسئلة متعلقة

+2 تصويتات
1 إجابة
سُئل يوليو 21 في تصنيف Delphi بواسطة Amar Gozim (6,240 نقاط) | 56 مشاهدات
+3 تصويتات
2 إجابة
سُئل أغسطس 2 في تصنيف Components بواسطة KHALED (5,790 نقاط) | 83 مشاهدات
+2 تصويتات
1 إجابة
سُئل أكتوبر 2 في تصنيف fmx بواسطة alhmam (550 نقاط) | 17 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

249 سؤال
451 إجابة
790 تعليق
148 مستخدم