عبدالرشيد احمد
الأعضاء-
المساهمات
20 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبدالرشيد احمد
-
مش متاكد لماذا ضبط كذا! شكلها استخدام singleline لتقيد على سطر واحد. من مصدر الرسمي: https://developer.android.com/reference/android/widget/TextView#attr_android:singleLine
- 8 اجابة
-
- 1
-
السلام عليكم ورحمة الله وبركاته، ماذا كان سبب تعلمك في الاول؟ لحسن حضي انا ما عند هاذي المشكلة الحين، بس عندي مشكلة التعب و ضيق الوقت. عشاني في هاذا المجال للضرورة والسهولة والمتع.
-
السلام عليكم ورحمة الله وبركاته، Express مكتبة مبنية على JavaScript, ويمكن تركيبها مع nodejs ليسهل وصول البرنامج اليه. إذا اردت ان اعمل API لبرنامج nodejs, هاذا اسهل واسرع مكتب اعرفه. رابط المكتبة: https://www.npmjs.com/package/express Nodejs برنامج يسهل ان تعمل خلفية لبرنلمج بلغة JavaScript. NPM مكتبة لمكتبات JavaScript لnodejs. تصفح هنا https://www.npmjs.com اضن تعدو اكثر من مليون مكتبة. المكاتب هاذي عبارة عن ملفات كود ممكن تسهل في تصنيع برنامجك بدل ان تعمل شي تم عمله من قبل من جديد. اذا كان تعلمك لسبب معين كعمل برنامج او تعلم شخص اخر او تشتغل في المجال هاذا. اضن مش ضروري ان تتعلم كل شيء. و تتعلم ما تحتاجه فقط لمهمة معينة. معضم هاذي الاشياء تتطور بشكل سريع و الحضر يمكن ان يكون غير كافي لبكرة. نصيحة مني كمطور برامج، ان تتعلم بشكل عملي. اعمل برامج واستخدم احدث الغات حتى ولو كان لك فقط. وإنشاء الله خير.
- 5 اجابة
-
- 1
-
السلام عليكم ورحمة الله وبركاته، كما بين احمد ريحاوي، إذا كان البنك المركزي هو المصدر الرسمي، إسالهم إذا كان لديهم قاعدة بيانات يوفر API يمكن تواصل عبره لجلب احدث الاسعار.
-
اسلام عليكم ورحمة الله وبركاته، قم بتركيب windows build tools و اضافت مسار python بكود التالي: npm --add-python-to-path='true' --debug install --global windows-build-tools
-
وعليكم السلام ورحمه الله وبركاته، أضن SharedPreferences يمكن استعماله لخفض بيانات لاستعمال في اي جزء من البرنامج. في طرق غير لتحويل المعلومات من شاشة لشاشة. اذا تريد تحويل معلومات في String من Activity الى Activity استعمل putExtra. مثال في اكتيفيتي الاولى: : String text1 = editText.getText().toString(); Intent intent = new Intent(MainActivity.this, Activity2.class); intent.putExtra("text1", text1); startActivity(intent); بعدين في اكتيفيتي الثانية: editText.setText(getIntent().getStringExtra("text1")); و اذا تريد تحويل معلومات في String من Fragment الى Fragment استعمل Bundle. مثال في فراجمنت الاولى: // بعد انشاء و ابداء الفراجمنت String text1 = editText.getText().toString(); Bundle bundle = new Bundle(); bundle.putString("text1", text1); fragmentName.setArguments(bundle); بعدين في فراجمنت الثانية: Bundle bundle = getArguments(); if(bundle! = null){ editText.setText(bundle.getString("text1")); }
- 5 اجابة
-
- 1
-
طيب، جرب هاذي الحين: MainActivitytt.java public class MainActivitytt extends AppCompatActivity { private Spinner spinner; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = findViewById(R.id.spinnerCountries); spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, CountryData.countryNames)); editText = findViewById(R.id.editTextPhone); findViewById(R.id.buttonContinue).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = CountryData.countryAreaCodes[spinner.getSelectedItemPosition()]; String number = editText.getText().toString().trim(); if (number.isEmpty() || number.length() < 6) { editText.setError("Valid number is required"); editText.requestFocus(); return; } String phoneNumber = "+" + code + number; PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 60, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } }); mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); new android.os.Handler().postDelayed( new Runnable(){ public void run(){ } }, 10000); Intent intent = new Intent(MainActivitytt.this, VerifyPhoneActivity.class); intent.putExtra("AuthCredentials", s); startActivity(intent); finish(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { signInWithCredential(phoneAuthCredential); } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(MainActivitytt.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(MainActivitytt.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } @Override protected void onStart() { super.onStart(); if (FirebaseAuth.getInstance().getCurrentUser() != null) { Intent intent = new Intent(this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } } } VerifyPhoneActivity.java public class VerifyPhoneActivity extends AppCompatActivity { private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); verificationId = getIntent().getStringExtra("AuthCredentials"); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } }); } private void signInWithCredential(PhoneAuthCredential credential){ mAuth.signInWithCredential(credential) .addOnCompleteListener(VerifyPhoneActivity.this, new OnCompleteListener<AuthResult>(){ public void onComplete(@NonNull Task<AuthResult> task){ if(task.isSuccessful()){ } else { if(task.getException() instanceof FirebaseAuthInvalidCredentialsException){ } } } }); } }
-
تعديل بصيط ايضا Declare this on top in MainActicitytt.java private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;
- 27 اجابة
-
- 1
-
اسف، خطا صغير في اجابة الاولة جرب هاذا. اذا تريد ان يقرا الكود من الsms اوتوماتك، عدل زيادا. الحين يجب ان تدخل الكود من الsms بالكيبورد. MainActivitytt.java public class MainActivitytt extends AppCompatActivity { private Spinner spinner; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = findViewById(R.id.spinnerCountries); spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, CountryData.countryNames)); editText = findViewById(R.id.editTextPhone); findViewById(R.id.buttonContinue).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = CountryData.countryAreaCodes[spinner.getSelectedItemPosition()]; String number = editText.getText().toString().trim(); if (number.isEmpty() || number.length() < 6) { editText.setError("Valid number is required"); editText.requestFocus(); return; } String phoneNumber = "+" + code + number; PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 60, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } }); mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); new android.os.Handler().postDelayed( new Runnable(){ public void run(){ } }, 10000); Intent intent = new Intent(MainActivitytt.this, VerifyPhoneActivity.class); intent.putExtra("AuthCredentials", s); startActivity(intent); finish(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { signInWithCredential(phoneAuthCredential); } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(MainActivitytt.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } @Override protected void onStart() { super.onStart(); if (FirebaseAuth.getInstance().getCurrentUser() != null) { Intent intent = new Intent(this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } } } VerifyPhoneActivity.java public class VerifyPhoneActivity extends AppCompatActivity { private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); verificationId = getIntent().getStringExtra("AuthCredentials"); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential){ mAuth.signInWithCredential(credential) .addOnCompleteListener(VerifyPhoneActivity.this, new OnCompleteListener<AuthResult>(){ public void onComplete(@NonNull Task<AuthResult> task){ if(task.isSuccessful()){ } else { if(task.getException() instanceof FirebaseAuthInvalidCredentialsException){ } } } }); } }
- 27 اجابة
-
- 1
-
عدلت الكود. جرب هاذا. اذا تريد ان يقرا الكود من الsms اوتوماتك، عدل زيادا. الحين يجب ان تدخل الكود من الsms بالكيبورد. MainActivitytt.java public class MainActivitytt extends AppCompatActivity { private Spinner spinner; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = findViewById(R.id.spinnerCountries); spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, CountryData.countryNames)); editText = findViewById(R.id.editTextPhone); findViewById(R.id.buttonContinue).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = CountryData.countryAreaCodes[spinner.getSelectedItemPosition()]; String number = editText.getText().toString().trim(); if (number.isEmpty() || number.length() < 6) { editText.setError("Valid number is required"); editText.requestFocus(); return; } String phoneNumber = "+" + code + number; PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 60, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } }); mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); new android.os.Handler().postDelayed( new Runnable(){ public void run(){ } }, 10000); Intent intent = new Intent(MainActivitytt.this, VerifyPhoneActivity.class); intent.putExtra("AuthCredentials", s); startActivity(intent); finish(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { signInWithCredential(phoneAuthCredential); } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } @Override protected void onStart() { super.onStart(); if (FirebaseAuth.getInstance().getCurrentUser() != null) { Intent intent = new Intent(this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } } } VerifyPhoneActivity.java public class VerifyPhoneActivity extends AppCompatActivity { private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); verificationId = getIntent().getStringExtra("AuthCredentials"); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential){ mAuth.signInWithCredential(credential) .addOnCompleteListener(VerifyPhoneActivity.this, new OnCompleteListener<AuthResult>(){ public void onComplete(@NonNull Task<AuthResult> task){ if(task.isSuccessful()){ } else { if(task.getException() instanceof FirebaseAuthInvalidCredentialsException){ } } } }); } }
- 27 اجابة
-
- 1
-
وايضا شوف https://www.heroku.com أضن يمكن تحميل البرامج ببلاش. و في https://pages.github.com و https://www.netlify.com لتحميل الصفحات ببلاش. Firebase أيضاً عندها firebase hosting و firebase functions لتركيب البرامج بلغة الجافا سكريبت على node.js. بس أضن قاعدة البيانات مبنية على noSQL.
-
السلام عليكم ورحمه الله وبركاته، إستعملت هاذا من قبل https://www.ramnode.com عندهم خدمات cloud vps رخيص جدا.
-
مش متاكد إذا كان النضام من عندهم للتوفير sms ولاكن يوفر. نعم أذا تقوم بالتجارب فقط، عادي! ولاكن للمستخدم الحقيقي أذا تعرض لاهاذا السيناريو, إذا خرج وحاول أن يدخل مرة أخرى، عشان لا ينتصر لساعات ولا يستطيع أن يدخل البرنامج تعامل مع هاذا السيناريو. طيب السلام عليكم ورحمه الله وبركاته
- 27 اجابة
-
- 1
-
طيب شفت المشكلة، إذا تم إستخدام الرمز وتم التحقيق مع تجربتي لم يرسل رمز جديد أيضاً وهاذا عشان لا داعي، هاذا الطريق توفر sms و جميل. عندنا ثلاثة سيناريوهات هنا: ١. onCodeSent هنا إذا تم إرسال رمز روح لإشاشة التحقيق مع intent ٢. onVerificationCompleted هنا إذا تم التحقيق من قبل و خرج المستخدم ب singout ولم يمر مدة كثيرة والبرنامج في نفس الهاتف، لا داعي لإرسال رمز جديد. هنا firebase تتعامل مع هاذا وعليك أن تعمل signin with credentials فقت ثم intent الذي تريد بعده ٣.onVerificationFailed هنا تعامل بالمشاكل بطريقتك الخاصة. رابط للمعلومات https://firebase.google.com/docs/auth/android/phone-auth
- 27 اجابة
-
- 1
-
السلام عليكم ورحمه الله وبركاته، حبيبي هل مشكلتك عندما يجيك الرمز وإستخدمته، ثم خرجت من البرنامج وحاولت أن تدخل مرة أخرى لم يصلك رمز جديد؟
- 27 اجابة
-
- 1
-
السلام عليكم ورحمه الله وبركاته، إذا لم تجد معلومات عن المصمم أو المبرمج حاول تواصل مع الموقع وإسأل أو تواصل مع أي شركة أو شخص يختص في تصميم و البرمجة و دل عليهم الموقع الذي اعجبك.
- 3 اجابة
-
- 1