رفتن به مطلب

محمدرضا شاهپیری

مدیر کل سایت
  • تعداد ارسال ها

    4,153
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    833

تمامی مطالب نوشته شده توسط محمدرضا شاهپیری

  1. سلام دوست عزیز. همه ی این کارهایی که دسترسی روت میخواد رو گذاشتم برای آپدیت بعدی انشالا. خیلی امکانات تو ذهنم هست که تو محیط لینوکس میشه انجام داد. یه خورده تمرکز و دقت میخواد. انشالا تو آپدیت بعدی امکانات عجیب غریبی میزارم. (البته با دسترسی روت و قاعدتا تو محیط لینوکس).
  2. تا لحظه آخر تو فکرم بود که اینو بزارما. یادم رفت آخرش. چشم اضافه میشه. با امکانات خیلی خوب.
  3. **ورژن 5 کتابخانه منتشر شد. تو این نسخه امکان نصب برنامه از حافظه برای اندرویدهای جدید اضافه شده.*** مثال نصب apk از حافظه. اول کدهای زیر رو به منیفست اضافه کنید. AddPermission(android.permission.REQUEST_INSTALL_PACKAGES) AddApplicationText( <provider android:name="android.support.v4.content.FileProvider" android:authorities="$PACKAGE$.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/persian_package_providers" /> </provider>) حالا به شکل زیر نصب کنید. Dim pckg As PersianPackageManager pckg.initialize("pckg") pckg.installPackageFromFile(File.DirRootExternal&"/myapk.apk") *************************************************************************************************************************** **** ورژن 3 کتابخانه اضافه شد: امکانات جدید. گرفتن برنامه ها، سرویسها، و تسکهای در حال اجرا. بستن سرویسهای پس زمینه و همچنین بستن برنامه ها با استفاده از uid حذف و نصب برنامه بدون درخواست از کاربر و بدون نمایش دیالوگ مربوط به نصب یا حذف(نیازمند دسترسی روت) مثالهای نسخه 3. حذف برنامه در حالت سکوت و بدون درخواست. pckg.unInstallAppSilencly("packagename") گرفتن سرویسهای در حال اجرا در پس زمینه Dim l As List=pckg.getRunningServices(100) For Each pin As RunningServiceInfo In l Log(pin.clientPackage) Log(CRLF) Log(pin.process) Log(CRLF) Log(pin.pid) Next ******************************************************************************************************************************** ورژن 2 کتابخونه اضافه شد. اضافه شدن کلاس PersianIntent مثال استفاده: پخش کردن فیلم با استفاده از mxplayer Dim pck As PersianPackageManager pck.initialize("event") Dim intent As PersianIntent Try intent.initialize intent.addPackage("com.mxtech.videoplayer.ad") intent.addAction(intent.ACTION_VIEW) intent.setDataAndType(File.DirRootExternal&"/mm.mp4",intent.VideoType) pck.openApp(intent.BaseIntent) Catch Return End Try به نام خدا عرض سلام و ادب خدمت انسورسنتریهای عزیز. با یک مجصول شگفت انگیز دیگه از سری محصولات پرشین در خدمتتون هستیم. از اسم کتابخونه مشخصه که قراره چه کاری انجام بده. این کتابخونه برای کار با پکیج ها ساخته شده. یعنی شما هر کاری که فکرشو بکنین میتونین با برنامه های نصب شده روی گوشیتون انجام بدین رو توی این کتابخونه آوردیم. لینک فروشگاه محصول امکانات کتابخانه. اول کتابخابخونه رو تیک بزنید و به شکل زیر اینشیالایز کنید. Dim pr As Persian_PackageManager pr.initialize("pr") 1: گرفتن خروجی apk از برنامه های نصب شده pr.getBackUpFromApp("com.whatsapp",File.DirRootExternal) 2: گرفتن لیست برنامه های دارای یک دسترسی خاص (برای مثال اینترنت) Sub permission Dim m As Map=pr.getAppsByPermition("android.permission.INTERNET",True) For i=0 To m.Size-1 Dim appi As PersianAppInfo=pr.getAppInfo(m.GetValueAt(i)) Log(appi.PackageName) Next End Sub 3: گرفتن لیست برنامه های نصب شده توسط کاربر Sub userapp Dim m As Map=pr.UserAppInstalled For i=0 To m.Size-1 Dim appi As PersianAppInfo=pr.getAppInfo(m.GetValueAt(i)) Log(appi.PackageName) Next End Sub 4: گرفتن لیست برنامه های سیستمی Sub systemapp Dim m As Map=pr.SystemAppInstalled For i=0 To m.Size-1 Dim appi As PersianAppInfo=pr.getAppInfo(m.GetValueAt(i)) Log(appi.PackageName) Next End Sub 5: گرفتن رسیورهای یک برنامه Sub reciver Dim m As Map=pr.getReciverssFromPackage("com.android.phone") For i=0 To m.Size-1 Log(m.GetValueAt(i)) Next End Sub 6: گرفتن سرویسهای یک برنامه 7:گرفتن اکتیویتیهای یک برنامه 8: گرفتن پرووایدرهای یک برنامه 9: گرفتن امضاهای یک برنامه 10:گرفتن بک آپ و ریستور از دیتای برنامه(نیازمند دسترسی روت) 11: گرفتن آیکن از برنامه نصب شده یا فایل apk موجود بر روی حافظه. 12:نصب برنامه از حافظه. 13: حذف برنامه دلخواه Sub uninstal pr.uninstallApp("com.quizapp.online") End Sub Sub pr_onDeleteResult(Result As String) ToastMessageShow(Result,False)گرفتن نتیجه حذف توسط کاربر End Sub 14:برسی اینکه یک برنامه سیستمی هست یا اینکه توسط کاربر نصب شده. Sub issystemapp If pr.isSystemApp("com.android.phone") Then ToastMessageShow("sytemapp",False) Else ToastMessageShow("nosytemapp",False) End If End Sub 15: برسی نصب بودن یا نبودن یک برنامه. Sub isappinstall If pr.isAppInstalled("com.quizapp.online") Then ToastMessageShow("app installed",False) Else ToastMessageShow("app notinstalled",False) End If End Sub 16: گرفتن اطلاعات کامل یک برنامه.(شامل نام، پکیج، ورژن کد، ورژن نیم، احجم برنامه، uid ، زمان نصب، و ...) Sub getinfo Dim appi As PersianAppInfo=pr.getAppInfo("packagename") Log(appi.PackageName) Log(appi.AppName) Log(appi.Size) Log(appi.CreatedAt) Log(appi.Uid) End Sub و یه سری امکانات دیگه به علاوه امکاناتی که در آینده به کتابخونه اضافه میشه. امیدوارم مورد پسند قرار بگیره
  4. تشکر از شما دوست گرامی. . جایزه در حد شما ما نداریم اصن. واسه همین جایزه معنوی بهت میدم :دی.
  5. مسابقه داره تموم میشه. فقط سه نفر شرکت کرده. این همه کاربر فعال. لطفا شرکت کنین بچه ها. مرسی
  6. ممنونم امین جان که تو مسابقه ی خودت شرکت کردی. از همه دوستان تقاضا میکنیم که تو مسابقه شرکت کنن و خودشونو محک بزنن. این همه کاربر فعال و سطح بالا داریمااا برنامه های خوبی برای مسابقات داریم. استقبال کنید دیگه چه جایزه ای بهتر از خوشناسی امین جان جایزه ها مشخصه دیگه. فروشگاهمو خداروشکر سرشار از محصولاته با ارزش و قدرتمنده.
  7. به نام خداوند رحمان. امیدوارم که حالتون خوب باشه و مثه همیشه قبراق باشین. همیشه تو هر محفلی که واسه یه مدت طولانی یه عده دور هم جمع میشن یکی دوتا از اعضای اون مجموعه بار خیلی از مسائل تیم رو به دوش میکشه. تو انجمن انسور سنتر هم با وجود اینکه خیلی از دوستان خالصانه و بدون هیچ گونه چشم داشتی و توقعی برای شاد کردن دل هموطنش و باز کردن گره از کار همنوعش زحمت کشیدن ولی بالاتر از همه ی ماها کسای دیگه ای بودن که این حلقه رو محکم و محکم تر کردن. تنها کاری که از دستمون برمیاد همینه که ازشون یاد کنیم و بهشون بگیم که واسمون ارزش دارین و میدونیم قدرتونو.(از اینکه نمیتونم از همه عزیزان تک تک تقدیر کنم واقعا پوزش میخوام چون تعدادشون اونقدر زیاده که نمیشه توی یه تاپیک جاشون داد) مهدی ایزدی : باعث و بانی این اتفاق بزرگ. کسی که باعث شد ما الان به این حد برسیم. درسته یه مدته به خاطر مشغله های اعصاب خورد کن نتونسته کنارمون باشه ولی جاش همیشه تو قلبمون و تو انجمن محفوظه تنها چیزی که من از خدا میخوام آرزوی سلامتی و تندرستی برای خودش و خونوادشه. و مطمئنم اگر کسی هم باشه که بی حساب بره بهشت مهدی ایزدی نازنینه. مجید آرتای دوست داشتنی: بعد از مهدی مجید عزیز جور همه مسائل و سختیای انجمن رو از روز اول تا الان به دوش کشیده. توی این یک ماهی که انجمن مشکل گرفته بود مجید یکه و تنها انجمنو زنده کرد واقعا اینا رو من میدونم چون بیشتر لحظه هامو با مجید میگذرونم و از نزدیک دیدم که چه حرص و تابی میخورد که انجمن خوابیده. کسایی که ادعای دلسوز بودن واسه انجمن میکردن روزای آخر خالی کردن پشتمونو. چیزایی زیادی من یاد گرفتم از مجید. یکی از قشنگتریناش سازش با همه اس. چیزی که خیلی از ماها نداریم و کلا خودمون قبول داریم بقیه واسمون ارزشی ندارن. همه ما برای سلامتیش دعا میکنیم و ایشالا که سایش بالا سر انجمن باشه( مجید تو هم بی حساب میری بهشت داداش غصه نخور :دی) امین شاهدی نازنین: کمتر کسی هست که از کتابخونه های آریای امین شاهدی استفاده نکرده. من معتقدم قلب تپنده اکثر برنامه های بیسیک و حتی جاوا توی ایران کارای امین شاهدیه عزیزه. زحمتاش واقعا غیر قابل جبرانه برا خود من به شخصه الگوی خیلی بزرگی بوده. ایشالا مراحل موفقیت رو یکی یکی طی کنه.آمین. (عشقه من) شهاب اسکندری: خونسرد و مهربون انجمن. کتابخونه های فراخوانیش یک ملت رو راحت کرد و دیتابیس بچه ها رو به حد اعلا رسوند. شهاب جانم ایشالا که توی این مسیر روبه رو در کنارمون باشی و بازم با حرفای گرمت همه مارو گرم کنی. آرزوی موفقیت داریم واست. پژمان نیکروان عزیز: یکی از کسایی که کارهای بسیار بزرگ و فنی برای انجمن کرده پژمان عزیزه. کتابخونه هاش واقعا بی نظیر بوده و کمک بزرگی به همه ی ماها کرده. پژمان حان انشالا که همیشه موفق و پیروز باشی و همین روند رو ازت ببینیم و چیزهای جدید زیادی رو از شاهد باشیم. و در آخر همه ی دوستانی که کنارمون بودن و با بودنشون به انجمن و همه ما معنی دادن. شماها نباشین مایی هم وجود نداره. انشالا که بتونیم هممون کسایی باشیم که گره از کار همدیگه باز میکنیم و در کنار هم نه تنها از برنامه نویسی بلکه از زندگی لذت ببریم. الهی آمین سلامتیه همه ی عزیزان یا حق.
  8. مممنون از شما دوست گرامی که در مسابقه شرکت کردید دوستان یه نکته ای رو توجه کنن که جوابا رو توی یه فایل فشرده به صورت زیر ارسال کنن. توی پیکو فایل آپلود نکنید عزیزان. گزینه ی پیوست وجود داره.
  9. مسابقه راه اندازی شد هورااااا :gamer: شرکت کنید هی نگم دیگه. مرسی :53:

  10. به نام خداوند بزرگ و مهربون. عرض سلام و خسته نباشید به بروبچ انسورسنتر و ممنونیم ازشون که تا اینجا تو جمع خونواده خودشون عاشقانه خالصانه و صادقانه موندن مسابقه ای رو برای عزیزان ترتیب دیدیم جهت محک زدن خودمون و همچنین ایجاد هیجان و رقابت بین عزیزان. سوال بسیار آسونه و هدف شرکت دوستان و ایجاد لحظه های خوب برای همدیگه هست. قبل از اینکه سوال رو بزارم یه سری نکات رو خدمت دوستان ارائه کنم که مشکلی پیش نیاد خدایی نکرده. *********1- جوابها باید به صورت فایل تکست بدون هیچ گونه توضیحی توی تاپیک گذاشته بشه(امکان دانلود برای دیگر اعضای گروه وجود نداره و فقط مدیریت به فایل ها دسترسی داره) 2- دوستان فقط یک بار میتونن به سوال پاسخ بدن. 3- مهم ترین عامل توی قبولی جوابها تمیز بودن کدنویسی بدون باگ بودن و داینامیک بودن جواب هست یعنی اینکه جوابی که میدن برای هر شرایطی جواب بده و با تغییر مقادیر اولیه هم درست باشه. 4- مسابقه برای همه دوستان هست هم عزیزان بیسیک و هم دوستان جاوا کار نکته ای که هست اینه که فقط به یه زبان میتونن دوستان پاسخ بدن. 5- مسابقه تا پنجشنبه شب ادامه داره و بعداز اون تاپیک بسته میشه و برنده ها اعلام میشه. جوایز متعاقبا اعلام خواهد شد که چی هست عرض دیگه ای نمونده . دوستان از همه تقاضا میشه که توی مسابقه شرکت کنن و امیدوارم که به همه خوش بگذره. موفق باشید واما سوال مسابقه فرض کنید مجموعه ی A به شکل زیر موجود است.(آرایه ی A هم میتونیم بگیم) A={"a","b","c","d","e","f"} همچنین فرض کنید مجموعه ی B به شکل زیر موجود است.(آرایه ی B هم میتونیم بگیم) B={"a","d","m","f","k","n","r","w","s","l"} سوال:::؟؟ تابعی بنویسید که اشتراک دو مجموعه را گرفته و در صورتی که همه ی اعضای A در مجموعه B نبود آرایه را با اعضای B از سمت چپ مقدار دهی کند و نتیجه را به صورت <ArrayList<String یا معادل بیسیک آن ()string و مرتب شده به ترتیب حروف الفبا برگرداند. راهنمایی(خروجی باید به صورت زیر بشه حتما) A={"a","d","f","k","m","n"} موفق و موید باشید ببینم چیکار میکنن
  11. ببینید هموطن متدی که اسم اپرواتور رو برمیگردونه getNetworkOperatorName هست. همونجوری که توی لاگ هم میبینید این متد توی کلاس TelephonyManager ی که توی گوشی شما هست وجود داره. پس نباید مشکلی توی گرفتن نام شبکه باشه. چون موقعی نام گرفته نمیشه که متد وجود نداشته باشه. در صورتی که این متد وجود نداشته باشه دوتا دیگه متد رو من تو کتابخونه بررسی میکنم اگه اونا هم نتونن چیزی بگیرن دیگه واقعا باید گوشی شما تخصصی بررسی بشه. یه چیز دیگه ای که ذهن منو مشغول کرده اینه که اسم یکی از اپراتورها رو گرفته ولی دومی رو نگرفته که این خیلی شک برانگیزه. وقتی یکیشونو گرفت دومی هم باید گرفته بشه. شما تو تنظیمات گوشی برین بببینین اونجا اسم هردوتا شبکه هست یا نه. یه اسکرین بفرستین از همین صفحه
  12. یه متد نوشتم تو کتابخونه به شکل زیر استفاده کنید و متن لاگ رو پیوست کنید. کتابخونه هم پیوست شده. Log("metods= "&prm.getAllMethodofTelClass) Persian_Imei.rar
  13. من چون عادت دارم همه چیو کامل توضیح بدم اگه بخوام کد هم بزنم تو فیلم حجم آموزش یه گیگ میشد جایی مبهم بود بگین تا توضیح بدم خدمتتون. در کل کد زدن رو باید خودتون همیشه انجام بدین. اینجوری دستتون روونتر میشه
  14. به نام خداوند یکه و تنها. بازم یه آموزش از سری آموزشای ویژه ی استاد :دی بدون فوت وقت مطلب رو ادا کنیم بریم پی بدبختیمون با توجه به عنوان تاپیک و اسکرین دیگه نیازی به ادا کردن مطلب هم نیست . تنها نکته ای که قابل توجه هست اینه که برای ارتباط با سرور از کتابخانه جادویی رتروفیت استفاده شده این آموزش اولین آموزشی بود که واقعا به دل خودم نشست و باهاش حال کردم. خیلی ساده شیک و مجلسی : دی امیدوارم شما هم از این آموزش لذت و استفاده کافی ببرید. پسند فراموش نشه. چندبار باید بگم. موفق باشید به قول شهاب جونم کدهاتون بی ارور :دی لینک آموزش
  15. یه سری نکات هست که باید بهشون توجه داشته باشین عزیز. مهمترینش اینه که تو هیچ کدوم از نسخه های اندروید تا حالا api ی برای گوشی های دو سیمکارته معرفی نشده و این متدهایی که توی کتابخونه استفاده شده بر اساس غالب دیوایسهای اندروید هست. بنابر این احتمال اینکه متدها توی بعضی از دیوایسها کار نکنن وجود داره. حداقل یک سریال رو به طور قطع برمیگردونه. ولی سریال دوم با احتمال بسیار کم ممکنه برنگردونه. مثل گوشی دوستایی که سامسونگ نئو پلاس دارن. در کل با خیال راحت استفاده کنین شاید نهایتا یه مدل دو مدل گوشی از دستتون در بره که اونم اگه بتونم رفع میکنم انشالا بله همین طوره. متغیر به صورت پیشفرض با null مقدار دهی شده و درحین گرفتن اطلاعات از دیوایس اگه مقداری نتونه بگیره در آخر همون null برگردونده میشه احتمالش نیست اصلا. سریال یه چیز سخت افزاریه و ربطی به سیمکارت نداره عزیز. هر درگاه یه سریال منحصر به فرد داره که با تعویض سیمکارت عوض نمیشه. اون چیزی که شما فکر میکنین عوض میشه IMSI هست نه IMEI
  16. دوستان کلا این قضیه گوشیا دو سیمکارته واقعا یه معضلیه که نگو. این کتابخونه اینقد پیچیده شده دیگه نمیتونم مدیریتش کنم خخخ. میدونید مشکل اینه که هر کدوم از گوشیا یه سازی میزنن این وسط. یکیشون یه متد داره اون یکی یه متد دیگه حالا بازم تحقیق میکنم ببینیم چی دستم میاد. متاسفانه گوشی رو ندارم. یه متد مینویسم که همه ی متهای کلاس telephony رو چاپ کنه رو گوشیتون نصب کنید و لاگ رو بفرستید ببینم واسه شما متدش چیه. یه مقدار طول میکشه صبور باشید لطفا
  17. موافق طراحی یا همون دیزاین توی اندروید استودیو و یه مقایسه کوچیک با بیسیک هستین عایا:girl_flag_of_truce:؟؟

  18. یه متد نوشتم تو کتابخونه تو لینک زیر دانلود کنید ببینید کار میکنه یا نه. کتابخونه رو دانلود کنید به جای initialaize از initialize2 استفاده کنید ببینید جواب میده یا نه. Persian_Imei
  19. عزیز من رو چندتا گوشی سامسونگ و هواوی تست کردم بدون مشکل نشون میده هر دو رو. مدل گوشی و نسخه اندرویدتونو بگین ببینم چیکار میتونم بکنم
  20. کتابخونه با امکانت خیلی بیشتر آپدیت و به پست اول اضافه شد
  21. ممنونم پژمان جان. انجام وظیفه اس. ببین عزیزم یکی اینکه شما وقتی dimen تعریف میکنی متونی همه ی واحدها رو بدی. sp , dp , dip و هر واحدی که فکرشو بکنی شما میتونی بدی. مثلا تو همین کتابخونه برای اندازه لیبل شما به جای 24dp میتونید واحد sp رو استفاده کنید یعنی بنویسید 24sp پس هیچ مورد و محدودیتی نیست. ام ادر مورد این سوال وقتی سایز متن لیبل رو دادیم 24dp توی گوشی های مختلف اندازه متن تغییر میکنه؟ اگه توضیحات رو بخونی من تاکید کردم که توی هر گوشی سایز متناسب با اندازه اون گوشی تغییر میکنه. و جای نگرانی نیست کافیه شما اونو تو گوشی خودتون ست کنید برای بقیه گوشیها دیگه درسته و متناسب با اون گوشی سایز تغییر میکنه
  22. من فکر کنم دوستان متوجه نشدن قضیه از چه قراره. ببینید دوستان فرض کنیم شما یه لیبل دارین و میخواین واسش اندازه متن بزارین. فقط کافیه یه dimen به شکل زیر درست کنین تو فایل xml همین. برای بقیه ویوها هم همین کارو بکنین دیگه. <dimen name="lable_textsize">24dp</dimen>
  23. دوست عزیز قبل از اینکه از کتابخونه استفاده کنید حتما توضیحات رو به دقت بخونید. مواردی که باید رعایت کنید اینه که حتما پوشه ها و فایلها رو read only کنید تا حین کامپایل حذف نشن. دوم اینکه شما توی دیزاینر سایز نزارید اصلا سایز نرمال رو توی همون فایل xml بزارین کتابخونه خودش واسه سایزای مختلف تغییرش میده
  24. کتابخونه ویرایش شد و متدهای جدید هم اضافه شد. به نام خدا بازم سلام به انسورسنتری های عزیز برای بسیاری از دوستان این مشکل وجود داره که اندازه ها تو گوشی های متفاوت براشون مشکل درست میکنه و تو سایزهای مختلف سایزها کوچیک یا بزرگ دیده میشن. یکی از راه های اصولی که خود گوگل هم پیشنهاد میده اینه که سایزها رو تو پوشه های مختلف ریسورس قرار بدین و دیگه خود اندروید با توجه به سایز صفحه سایز متناسب رو میخونه. توی بیسیک کتابخونه ای برای خوندن مقادیر از پوشه dimen وجود نداره برای همین کتابخونه رو برای دوستان آماده کردیم تا استفاده کنن. نحوهی استفاده به این صورت هست. فرض کنیم یه لیبل داریم و میخوایم تو گوشی های مختلف سایز متفاوتی داشته باشه. ابتدا به پوشه ی Objects\res موجود توی برنامه میریم و پوشه ای به نام values میسازیم و اونو read only میکنیم حالا یه فایل به نام dimens.xml توی این پوشه میسازیم. تا اینجا کار تمومه فقط باید مقادیری که میخوایم به صورت زیر توی پوشه قرار بدیم و در نهایت اونو read only کنیم(حتما این کارو بکنید که فایل در حین کامپایل پاک نشه). <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="lable_textsize">24dp</dimen> <dimen name="lable_height">30dp</dimen> <dimen name="lable_with">50dp</dimen> <dimen name="imageview_size">70dp</dimen> </resources> حالا کتابخونه رو تیک میزنیم و به صورت زیر استفاده میکنیم(مثلا اندازه متن لیبل رو میدیم) Dim p As Persian_Android_Dimen p.initialize Label1.TextSize=p.getDimen("lable_textsize") دوستان دقت کنید دیگه نیازی به پوشه های values-normal و values-large و .... نیست. کافیه پوشه value و فایل dimen رو ایجاد کنید کتابخونه بر اساس سایز گوشی مقادیر رو انتخاب میکنه. امیدوارم مفید بوده باشه. لینک کتابخانه نسخه جدید. دوستان کتابخونه ویرایش شد به خاطر یک اشتباه محاسباتی مقادیر تو سایزهای مختلف درست گرفته نمیشد که برطرف شد. متدهای جدید و کاربردی رو به کتابخونه اضافه کردم. از جمله گرفتن طول و عرض گوشی بر حسب پیگسل همچنین گرفتن چگالی گوشی بر حسب dp و گرفتن اسکیل گوشی نیز اضافه شده. Dim pr As Persian_Android_Dimen pr.initialize Msgbox("value="&pr.getDimen("fab_elevation")&CRLF&"denc= "&pr.scaledDensity&CRLF&"dencDPI= "&pr.densityDpi&CRLF&"xDPI= "&pr.widthPixels&CRLF&"yDPI= "&pr.heightPixels,"") لینک نسخه جدید
×
×
  • اضافه کردن...