easyDelphi Q&A

Reword

+1 تصويت
53 مشاهدات

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

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 بواسطة (2,080 نقاط) | 53 مشاهدات
 
ما هو اصدار android sdk  في الهاتف ؟
لديا هاتف OPPO F1s بإصدار 5.1 كما أنا نسخة الديلفي هي berlin update 2 .

1 إجابة واحدة

+1 تصويت

 رابط تحميل البرنامج كاملا مع الكود سورس هنا    الباسورد لفك الضغط هو "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 بالمائة .

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

 

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

اسئلة متعلقة

+4 تصويتات
1 إجابة
+2 تصويتات
3 إجابة
سُئل يوليو 11 في تصنيف Delphi بواسطة Amar Gozim (1,810 نقاط) | 56 مشاهدات
+2 تصويتات
1 إجابة
0 تصويتات
1 إجابة
سُئل منذ 1 يوم في تصنيف Libraries بواسطة Amar Gozim (1,810 نقاط) | 20 مشاهدات
+2 تصويتات
2 إجابة
سُئل يوليو 11 في تصنيف Delphi بواسطة مجهول | 23 مشاهدات

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

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

66 سؤال
141 إجابة
228 تعليق
77 مستخدم