اذهب إلى المحتوى

رفيق هادي مبارك هادي مشعيل

الأعضاء
  • المساهمات

    27
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة رفيق هادي مبارك هادي مشعيل

  1. السلام عليكم ورحمة الله وبركاتة

     اريد كيفية تثبيت وتهيئة محرر النصوص (بيئة) VHEditor على هواتف الأندرويد ، وبالأخص تحميل متطلبات برمجة تطبيقات الاندرويد باستخدام لغة dart و flutter فانا اواجه صعوبة في ذلك ، فقد قمت بتثبيت VHEditor على هاتفي ولكن عندما اريد تحميل متطلبات dart و flutter من المكان المخصص لتحميلها بداخل VHEditor تظهر ادوات dart و flutter بشكل باهت ولا يمكن النقر عليها لتنزيلها ويظهر ايظا هذه الرسالة BlobNotFoundThe specified blob does not exist. RequestId:0ef85753-e01e-00e4-71e8-1ff702000000 Time:2023-01-04T03:02:23.2229769Z 

    الصورة توضح ذلك 

    -------------------

    معلومات:

    VHEditor

    هو عبارة عن محرر نصوص نفس viscul code الذي يعمل على الكمبيوتر ، وهذا المحرر يمكن تثبيت بيانات (مترجمات) لكثير من اللغات ليتم تنفيد الاكواد بتلك اللغات.

     

    هاتفي الذي اعمل عليه vivo v2027 ونسخة الاندرويد 10

     

    نسخة VHEditor التي لدي هي : 1.9.0 (31)

     

    IMG_٢٠٢٣٠١٠٤_٠٦٠٣٣١.jpg

  2. السلام عليكم ورحمة الله وبركاتة
     لدي كود بلغة c من نوع متقدم (اي هياكل بيانات بـstruct) .
    يوجد لدي ثلاث دوال احداها للاضافة واثنتان للبحث.
    الدوال جاهزة .
    الذي اريدة هو كيف يمكنني استدعاء تلك الدوال في main().هذا هو الكود:

    #include <stdlib.h>
    #include <iostream.h>
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    
    //التصريح عن المتحوالت التي تمثل الانماط الاربعة
    #define _int 1
    #define _float 2
    #define _str 3
    #define _chr 4
    
    //تعريف تركيبة تمثل بنية جدول الرموز
    typedef struct sym_node
    {
     char name[51];
     struct sym_node *next;
     int type;
    };
    //sym_node
    
    sym_node *sym_table = NULL;
     // الرموز جدول إنشاء
    //اضافة رمز تابع الى جدول الرموز
    sym_node *put_sym(char *sym_name, int sym_type) 
    {
     sym_node *ptr;
     ptr = (sym_node *)malloc(sizeof(sym_node));
     strcpy(ptr->name, sym_name);
     ptr->type = sym_type;
     ptr->next = (sym_node *)sym_table;
     sym_table = ptr;
     return ptr;
    }
    
    //البحث عن رمز ضمن جدول الرموز
    sym_node *get_sym(char *sym_name)
    {
    sym_node *ptr;
    for(ptr=sym_table;ptr!=NULL;ptr=(sym_node*)ptr->next)
    if(!strcmp(ptr->name,sym_name))return ptr;
    
    return NULL;
    }
    
    //التحقق من نوع بيانات الرمز
    int get_sym_type(char *sym_name)
    {
    sym_node *ptr;
    for(ptr=sym_table;ptr!=NULL;ptr=(sym_node*)ptr->next)
    if(!strcmp(ptr->name,sym_name)) return ptr->type;
    
    return 0;
    }
    
    int main(){
    
    }

    مشكورين مقدما وجزاكم الله كل خير

  3. السلام عليكم ورحمة الله وبركاتة
     قمت بعمل تطبيق بالجافا للاندرويد ، ومن محتوياته كود لحذف عدة ملفات بعظها في التخزين الداخلي واخرى في التخزين الخارجي.
    وهذا هو الكود:
    اولاً : قمت بعمل دالة للحذف:

    public void funDelete(File folder){
      try{
        File[] cont_file=folder.listFiles();
        for(File file : cont_file){
          file.delete();
        }
      }
      catch(Exception ex){
        //Toast.makeText(c,ex.getMessage(),1).show();
      }
    }
    


    ثانياً : استدعاء دالة الحذف:

    //كل المسارات
    String [] paths={"/storage/emulated/0/SHAREit/download/videos/.caches"
      ,"/storage/sdcard1/SHAREit/download/videos/.caches"
      ,"/storage/sdcard1/Android/data/com.lenovo.anyshare.gps/files/SHAREit/download/videos/.caches"};
    for(String path : paths){
      try{
        File folder=new File(path);
        if(folder.exists())
          funDelete(folder);
      }
      catch(Exception ex){
        Toast.makeText(c,ex.getMessage(),1).show();
      }

    وقمت بعمل الاكواد الاخرى التي يتطلبها التطبيق كالصلاحيات التي في ملف androidmanifest.xml

    <!-- قراءة محتويات بطاقة SD -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    
    <!-- تعديل محتويات بطاقة SD أو حذفها -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    وكذلك الكود  الذي يطلب من المستخدم باعطاء الصلاحية لهذا التطبيق او رفضها والكود كالاتي :

    //دالة للتأكد من اصدار الاندرويد
    protected boolean shouldAskPermissions() {
      return (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1);
    }

     

    // @TargetApi(23)
    //دالة اعطاء الصلاحيات او رفضها
    protected void askPermissions() {
      String[] permissions = {
        "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"
      };
      int requestCode = 200;
      requestPermissions(permissions, requestCode);
    }

    حيث يتم استدعاء الدالتين كالاتي :

    if (shouldAskPermissions()) askPermissions();
    

    المشكلة التي حصلت لدي انه فقط يتم حذف الملفات التي في التخزين الداخلي 

    "/storage/emulated/0/SHAREit/download/videos/.caches"
    

    اما التي في التخزين الخارجي فانه لا يتم حذفها

    ,"/storage/sdcard1/SHAREit/download/videos/.caches"
    ,"/storage/sdcard1/Android/data/com.lenovo.anyshare.gps/files/SHAREit/download/videos/.caches"
    
    

    ولكن عندما قمت بعملية قراءة (عرض) الملفات التي في التخزين الخارجي تم بنجاح ، اي ان المشكلة هنا هي في الكتابة على الملف (كاضافة ملف او حذفه).
    بصراحة بحث في النت عن اكواد ولكن لم استطع ان اوصل لحل مشكلتي.

    للعلم انا اتعامل مع Android X في البرمجة


  4. في الاصدارات القديمة من الاندرويد اذا كنت تريد لتطبيقك بالوصول الى الملفات في الذاكره كان يكفي ان تضع هذين السطرين في ملف androidmanifist.xml فقط:

    <!-- قراءة محتويات بطاقة SD -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    
    <!-- تعديل محتويات بطاقة SD أو حذفها -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

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

    السؤال :
    انا عملت تطبيق يتعامل مع الملفات وعندما اقوم باستعراض ملف من الذاكرة الخارجية يتم بنجاح ولكن عندما اقوم بانشاء ملف جديد او حذف ملف لا يعمل اي شيء (لا يتم).
     وعندما بحثت في عدة مواقع في النت وجدت الكود المطلوب وهو كود طويل شي ما ولكن لا مشكلة فالمشكلة هي :
    ان اجزاء من ذلك الكود مأخوذه من الكلاس ActionCompat وانا اتعامل مع الكلاس Action فهل :
    اذا ردت ان اجعل تطبيقي يطلب من المستخدم اعطاءة تفويض للكتابة (permission write) على الذاكرة الخارجية (sd) .
    هل احتاج الى AndroidCompat التي يرث كلاس النشاط فيها من كلاس ActivityCompat بدلا من كلاس Activity.  

  5. المشكلة انه لا يمكن تنفيذ هذه العمليه(اي الحصول على التطبيقات النشطه حاليا) من اندرويد لوليب (Android L) والنسخ التاليه بغرض الامان.

     

    عندما جربت التطبيق الذي عملته بنفس الكود الذي تفظلت به على نسخ قديمه من اندرويد تم بنحاح.

     

     

    على العموم مشكور اخي وحزاك الله خيرا

  6. بتاريخ 2 ساعات قال Hassan Hedr:

    المنبة لا يعمل بطريقة BroadcastReciever بل يستخدم مدير التنبيهات AlarmManager، المشكلة لا يمكنك التحكم متى سيذهب تطبيقك لحالة Sleep من قبل النظام، يعتمد ذلك على العمل الذي ترغب في فعله فقد تجد طريقة أخرى لتنفيذه

    ولكن AlarmManager يستدعي كلاس BroadcastReceiver

     انا فقط بدلا من جعل العمل يتنفذ في فترات زمنيه متعاقبه جعلته يتنفذ عند حدوث تغيير في حالة wifi.

     

    المشكلة هي في ان النظام يحاول ان يجعل النظام يعمل باداء جيد كما اسلفت انت ولحل المشكلة على مستخدم التطبيق ان يقوم بقفل التطبيق حتى لا يتم ازالته من الرام تلقائيا 

     

    الصورة التاليه توضح ذلك

    بتاريخ 2 ساعات قال Hassan Hedr:

     

     

    Screenshot_٢٠٢١١٢٠٦_٢١١٢١٩.jpg

  7. استعمل group by اي تجميع بواسطة ، وحدد عمود ip ليتم التجميع على اساسه كالاتي :

    select colum_state , count(colum_id) from name_table groub by colum_id;

     

    colum_state عمود اسم الدوله

    name_table اسم الجدول

  8. ما الفرق بين :
    Android app 
    التي يكون فيها الكلاس الخاص بالنشاط يرث من كلاس Activity
    Android AppCompatApp
    التي يكون فيها الكلاس الخاص بالنشاط يرث من كلاس AppCompatActivity
    AndroidX App 
    التي يكون فيها الكلاس الخاص بالنشاط يرث من كلاس AppCompatActivity
    وماذا يعني كل منهم ، وما هي استخداماته ، وما هو الافظل منهم ؟

    لانني انا استعمل بيئة (AIDE) المصغره على الهاتف لعمل تطبيقات الاندرويد بلغة الجافا ، وهي تعمل بالنوع الاول والذي يكون فيه كلاس النشاط يرث من كلاس Activity ، وعندما ابحث عن اكواد في النت لاستعمالها في تطبيقاتي لا تعمل لانها من النوعين الآخرين .
     

  9. قمت بعمل كلاس يرث من BroadcastReceiver ليعمل في الخفاء. كالاتي:

    public class aaa extends BroadcastReceiver {
        Context c;
        @Override
        public void onReceive(Context context, Intent intent){
    //الكود الذي نريد تنفيذة في الخفاء
        {


    وقمت بعملية الاستدعاء او التنفيذ كالاتي:
    في ملف Androi Manifest. xml

    <receiver           android:name=".aaa"      android:enabled="true" android:exported="true">
      <intent-filter>
        <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
      </intent-filter>
    </receiver>


    اي انة سيتم التنفيذ او الاستدعاء عندنا تتغير حالة wifi .
    عندما قمت بتثبيت التطبيق (قمت بازالتة من التطبيقات المصغره) وغيرت حالة wifi تمت العملية بنجاح ، ولكن :
    اذا تركت الهاتف مدة ثم قمت بتغيير حالة wifi لا يتم اي عمل.
    الا اذا قمت بتشغيل التطبيق مرة اخرى وهكذا بعد كل مدة.
    لو تفظلتم ممكن احد يفيدنا .
     

  10. انا عملت تطبيق يعمل في الخفاء عند تنفيذ مهمه محددة .

    الكود هو كالاتي :

    اولا : عملت كلاس يرث من BroadcastReceiver كالاتي :

    public class bbb extends BroadcastReceiver {
    
    
      @Override
      public void onReceive(Context context, Intent intent) {
    
        Toast.makeText(context," السلام عليكم ",1).show();
    
      }
    }

    حيث يتم استدعائه وتنفيذ الكود الذي بداخله عندما يتم تغيير حالة WIFI او عند تغيير حالة وضع الطائرة ويتم ذلك بوضع الاكواد التالية في ملف androidmanifest.xml :

    الاستدعاء عند تغيير وضع الطائره: 

    <action android:name="android.intent.action.AIRPLANE_MODE"/>
    

    الاستدعاء عند تغيير حالة WIFI :

    <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
    

    وذلك كالاتي :

    <receiver android:name=".aaa" 
    
              android:enabled="true" 
    
              android:exported="true">
    
      <intent-filter>
    
        <action android:name="android.intent.action.AIRPLANE_MODE"/>
    
        <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
    
      </intent-filter>
    
    </receiver>
    

    الذي اريده انا :

    1. هل يمكن الاستدعاء يتم عند تشغيل تطبيق آخر (بدلا من الاستدعاء عند تغيير حالة wifi او وضع الطائره) مثلا عند تشغيل متصفح الذاكرة.

     2. بدلا من الاستدعاء عند تغيير حالة wifi هل يمكن جعلة يستدعي فقط عندما يتم تشغيل wifi (اي انه كان wifi شغال وقمنا باطفاءة لا يتم الاستدعاء)

  11. بتاريخ On 11/24/2021 at 09:14 قال شرف الدين2:

    يقوم ال ActivityManager بتوفير دالة تقوم بالإفصاح عن التطبيقات التي تعمل في الهاتف , الدالة هي getRunningAppProcesses

    وﻻ تأخذ تلك أي معاملات وتقوم بإرجاع list تحتوي بداخلها على العمليات التي تعمل في الهاتف على هيئة الصنف RunningAppProcessesInfo

    ويمكنك تنفيذ المطلوب عبر الشفرة التالية 

    
    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();

    ومن ثم يمكنك وضع الشفرة السابقة في حلقة تكرارية غير متناهية 

    
    while(true){
    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
    }

    والتحقق من إسم العملية 

    
    while(true){
    ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
    for (int i = 0; i < runningAppProcessInfo.size(); i++) {
      if(runningAppProcessInfo.get(i).processName.equals("اسم التطبيق")) {
        // قم بتنفيذ عملية ما
      }
      
      }

     

    قمت بتجربة هذا الكود ولكن:

     1. هذا الكود لا يعمل الا عندما اقوم بتشغيل البرنامج الذي يحتوي على الكود ، انا اريد أن اقوم بتثبيته فقط ثم هو يقوم بالعمل عندما يتم تشغيل البرنامج المحدد

    2. عندما قمت بتنفيذ الكود (وبدل الاختبار جعلته يعرض اسماء التطبيقات التي تعمل) ولكن لم يعرض لي الا اسم برنامجي الذي يحوي هذا الكود . طبعا بعد ان قمت بعمل دوارة منتهيه بدل while التي وضعتها كغير منتهيه مثلا جعلتها تدور عشر مرات ولكن كل ما تم عرضه هو فقط اسم برنامجي مع العلم انه كان يوجد عدة تطبيقات تعمل في الخلفية مشغل موسيقى وفيديو وعدة تطبيقات ولكن لم يعرضها

    يا اخي بالمختصر اريد ان تطبيق يقوم بحذف ملفات الفيديو التي بتم عرضها في الشاشة الرئيسية لتطبيق SHAREit .

    قمت بعمل التطبيق وجعلته يعمل في الخفاء حيث عملت Alarm Manager يستدعي دالة الحذف في كل دقيقة وتم العمل بنجاح ، ولكن هذة الطريقة تستهلك البطارية ، فبدلا من عمل التطبيق دائما اريده فقط ان يعمل عندما يكون تطبيق SHAREit نشط.

  12. بتاريخ 2 ساعات قال ماجد قطوسة:

    عزيزي ،  تبين انه  يجب عليك استخدام nvarchar للبيانات من نوع unicode - utf8 " أي اللغة العربية و ما يشبهها " و قم بإضافة حرف N قبل النص المراد  البحث  عنه  كما يلي 

    
    select * from tableName where name=N'نص باللغة العربية'

    قم بتغير أحد الحقول في جدولك الى صيغة nvarchar و قم بتجربة البحث عنه . 

    مشكووور اخي ماجد وجزاك الله خير

     

    تم حل المشكلة بنجاح

    • أعجبني 1
  13. بتاريخ 3 ساعات قال Nabil Tayeh:

    عليكم السلام
    ما هي لغة البرمجة؟

    واجهتني المشكلة وانا انشئ صفحات انترنت باستخدام تقنية asp.net  C#

    بتاريخ 1 ساعة قال ماجد قطوسة:

    تحياتي لك .  
    المشكلة تكمن في الترميز الخاص في قاعدة البيانات ،  بحيث انه يخزن النصوص العربية على شكل رموز و هذا هو السبب الرئيسي لفشل عملية البحث  ،  استخدم دائما الترمز utf8_unicode_ci فبهذا الترميز تستطيع التعرف على كل اللغات (عريبة،  هندية ، صينية .. الخ  )

    هلا فيك اخي

     

    عندما اقوم بعرض البيانات كامل فانه يتم عرضها كامل  عربي او انجليزي بدون اي مشاكل

    ولكن المشكلة عندما اعمل بحث عن اسم لعرض كامل بياناته

    مثلا: 

    لدي في قاعدة البيانات في عمود الاسماء

    رفيق هادي 

    و

    saleh ahmd

    --------------

    فعندما اقوم بعرض الكل يتم العرض بدون اي مشاكل

    ولكن عندما اريد عرض بيانات

    رفيق هادي

    فاقوم بكتابة رفيق هادي في textbox والضغط على زر عرض الذي ينفذ امر الاستعلام بشرط ان يكون عمود الاسماء يساوي النص الذي بداخل textbox

    فانه يعرض ما مفاده ان هذا الاسم غير موجود

     

    ولكن عندما اكتب saleh ahmd

    فانه يعرض بياناته بدون مشاكل

     

     

  14. قمت بانشاء قاعدة بيانات  وقمت بتعبئتها بالبيانات انجليزية وعربيه ، ثم انشأت اداة text box للبحث من عمود الاسماء وتمت العملية بنجاح .

    المشكلة :

    انني عندما اقوم بالبحث عن اسم بالحروف العربيه يقول غير موجود 

    اما اذا بحثت عن اسم باللغة الانجليزية فان البحث يتم بنجاح

    اريد حل لهذه المشكلة وجزاكم الله خير

×
×
  • أضف...