برترین های انجمن

  1. Farzad Sarseifi

    Farzad Sarseifi

    مدیریت انجمن


    • امتیاز: پسندیدن (Likes)

      31

    • تعداد ارسال ها

      1,982


  2. مهندس

    مهندس

    توسعه دهنده اندروید


    • امتیاز: پسندیدن (Likes)

      7

    • تعداد ارسال ها

      83


  3. شاهرخ جهان زاده

    شاهرخ جهان زاده

    توسعه دهنده اندروید


    • امتیاز: پسندیدن (Likes)

      4

    • تعداد ارسال ها

      39


  4. Seven7up

    Seven7up

    مدیر انجمن


    • امتیاز: پسندیدن (Likes)

      3

    • تعداد ارسال ها

      110



Popular Content

Showing most liked content since ۱۷/۰۸/۲۰ in پست ها

  1. 2 likes
    وقتی که میخوایم داده هایی رو از کاراکتر ها و یا ارایه ها بخونیم میتونیم اونها رو داخل یک bufferreader بریزیم.و سپس اونها رو بخونیم. تو اینجا یه مثال ساده گذاشتم امیدوارم ب دردت بخوره.توضیح کد اینه ک یه اریه از نوع char داریم و یه بافر ریدر هم تعریف کردیم.میخایم با استفاده از داده های اریه ی char رو بخونیم و برزیم داخل بافر ریدر . بعدش این بافر ریدر رو به رشته تبدیل میکنیم. char[] char_me=arr_char; StringBuffer result = new StringBuffer(); for (int i = 0; i < arr_char.size(); i++) { result.append( char_me[i] ); } String str=result.toString();
  2. 2 likes
    سلام این آموزش رو مطالعه کنید: http://mrbool.com/how-to-change-the-layout-theme-of-an-android-application/25837
  3. 2 likes
    کاتلین چیست ؟ کاتلین یک زبان برنامه نویسی تایپ اسکریتی میباشد برای ماشین مجازی JVM که اندروید ومروگر های بطوررسمی توسط گوگل برای اندروید پشتیبانی میشود. زبان برنامه نویسی کاتلین توسط شرکت Jetbrain توسعه داده شده است .شرکت Jetbrain ایجاد کننده Intellij idea میباشد ،اندروید استودیو نیز براساس Intellij میباشد .در مراسم گوگل i/o 2017 گوگل بطور رسمی کاتلین را زبان رسمی توسعه اندروید بنا نهاد. چرا کاتلین : با استفاده از زبان کاتلین کدهای کمتری خواهید نوشت و با عملیات های بسیار بالا.در جاوا. اگر شما میخواهید یک data کلاس ایجاد کنید مدت زمان زیادی را باید صرف ساخت members و getter و setter ها کنید،اما در کاتلین شما میتوانید اینکار را با کدهای خیلی کمتری انجام دهید data class Person( var id : Long, var name:String, var age: Int) همچنین یک نکته خوب دیگه : Null safe در زبان برنامه نویسی جاوا هنگام کد نویسی با مقدار Null pointer exception زیاد روبه روبه میشوید.اما بااستفاده از زبان برنامه نویسی کاتلین خطای Null pointer exception هیچوقت رخ نخواهد داد چگونه میتوانیم از کاتلین استفاده کنیم ؟ از اندروید استودیو 3.0 کاتلین بطور کامل پشتیبانی میشود. در ورژن های حال حاضر میتوانید پلاگی کاتلین را نصب کنید و از زبان برنامه نویسی کاتلین استفاده کنید.
  4. 2 likes
    برای پیاده سازی اینکار باید در فایل مانیفست تگ زیر را اضافه کنید تا در صورتی کاربر در بخش Brower ها اپ شما را انتخاب کرد اطلاعات برای شما ارسال شود <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="example.com" android:pathPrefix="/someresource/" android:scheme="http" /> <data android:host="www.example.com" android:pathPrefix="/someresource/" android:scheme="http" /> </intent-filter> Here, scheme -> Protocol of particular site host-> Exact site url with WWW pathprefix - > Your site's sub path if available Now,
  5. 2 likes
    در این تاپیک آموزشی، از ابتدا آموزش برنامه نویسی اندروید را شروع خواهیم نمود ،یکی از مشکلات برنامه نویسان اندروید کم یا نبود آموزش های اصولی اندروید میباشد ،بر همین اساس تصمیم بر آن داشتیم بطور جامع آموزش های فارسی را منتشر نماییم . بیشتر کاربران انجمن برنامه نویسی اندروید، کم و بیش با این مشکل رو به رو بوده اند که به چه صورتی اندروید را شروع کنند و شروع به آموزش اندروید بگیرند.بر این اساس در این تاپیک بطور جامع آموزش های اندروید قرار داده خواهد شد.. این تاپیک آموزشی هر چند روز یکبار بروز رسانی خواهد شد و آموزش ها جدیدتر قرار داده خواهد شد منو در اندروید ذخیره سازی اطلاعات در اندروید فرگمنت و گوگل مپ در اندروید وب سرویس در اندروید آموزش های متریال دیزاین در اندروید آموزش های کاتلین : با تشکر انجمن برنامه نویسی اندروید-پی سی دروید
  6. 2 likes
    کاربران گرامی با درود و عرض احترام لطفا در ارسالهای خود و بخشهای مختلف انجمن پی سی دروید قوانین زیر را رعایت فرمائید: منع فعالیت سیاسی : هر گونه فعالیت سیاسی بر خلاف قوانین بوده و با کاربر خاطی سریعا برخورد خواهد شد. زبان فارسی : زبان اصلی این انجمن فارسی است ، لطفا در هنگام ارسال مطالب از زبان پینگلیش استفاده نکنید . قوانین عمومی 1- انجمن پی سی دروید بدون هیچگونه فعالیت در جهت کسب منافع مادی فقط و فقط در حیطه راهنمایی کاربران ، رفع مشکلات کاربران ، معرفی و آموزش اندروید فعالیت مینماید و هر کاربر یا مدیری که در جهت سودجویی و منفعت مالی اقدام به منحرف کردن مبحث و سوالات کاربران دیگر را داشته باشد در بار اول به مدت 24 ساعت و برای بار دوم برای همیشه از انجمن اخراج میگردد. 2- تبلیغات در انجمن ممنوع میباشد و کاربران صرفا مجاز به درج تبلیغ در امضا خود میباشد و ارسال پست و تاپیک های تبلیغاتی شامل اخطار و اخراج میشود. 3- تمامي کاربران مي بايست در هنگام ثبت نام در سايت ، از کلمات مناسب جهت استفاده در نام کاربري خود استفاده نمايند. در صورت مشاهده کلمات رکيک و نامناسب، اشتراک آن كاربر در اولين فرصت حذف خواهد شد و دسترسي وي به انجمنها قطع خواهد شد حتي المقدور نام كاربري را با حروف انگيسي به جاي فارسي ايجاد نماييد. 4- کاربران سايت مي بايست در هنگام ارسال پيغام در انجمن ها از کلمات مناسب استفاده نمايند. در صورت مشاهده کلمات رکيک و نامناسب ، اشتراک آن كاربر در اولين فرصت حذف خواهد شد و دسترسي وي به انجمنها قطع خواهد شد. 5- عنوان تاپيک بايد به خودي خود نشانگر محتوا و گفتگوي هاي تاپيک باشد . لطفا در هنگام ايجاد تاپيک به اين نکته توجه کنيد تا تاپيک شما بيشتر مورد توجه ساير کاربران قرار گيرد . از ايجاد تاپيک هايي با عناوين : کمک ، کمک فوري ، خيلي مهم و ساير عناوين عمومي جدا خودداري کنيد ... 6- در صورتي که مايل به ارسال مطلبي از يک سايت ديگر مي باشيد ، حتماً منبع آن را ذکر نماييد. در صورتي که مطلب يا موضوع مذکور نوشته شده توسط شخص خاصي بود ، حتماً نام وي را ذکر نماييد. 7- لطفا در هنگام مطرح کردن سوالات خود ، انجمن مناسب را انتخاب نماييد و از مطرح کردن سوالات خود در انجمنهاي نامتناسب با سوالتان خودداري نماييد. 8- لطفا در هنگام طرح سوالات خود آنها را به صورت جداگانه مطرح فرماييد. بدين معني که در صورتي که سوالهاي گوناگوني داريد ، آنها را در چندين موضوع جداگانه مطرح نماييد و از مطرح کردن تمامي سوالات در يک موضوع خودداري فرماييد . 9- لطفا در هنگام جواب دادن به سوالات از به کار گيري الفاظ و جملاتي که باعث دلسردي کاربر سوال کننده شود خودداري فرماييد. اين را بدانيد که اين سايت محل آموزش است و کساني هستند که سوالهايشان بسيار ابتدايي مي باشد. لذا از به کارگيري کلماتي که باعث شود کاربر به جاي گرفتن جواب سوال خود دلسرد شود اکيداً خودداري فرماييد. 10- لطفا در صورتي که جواب يک سوالي را نمي دانيد از ارسال مطالبي که باعث شلوغ کردن آن تاپيک ( يا سوال ) شود خودداري فرماييد. در صورتي که بحث خاصي داريد مي توانيد براي خودتان يک تاپيک عمومي باز کنيد. 11- از نوشتن يك سوال و يا يك نامه در انجمنهاي مختلف خودداري كنيد. طبق قانون شماره 7 انجمن مناسب و مرتبط به نامه خود را انتخاب كنيد و فقط در آن انجمن نامه خود را ارسال كنيد. 12- تمام کاربران و مدیران موظف به احترام گذاشتن به یکدیگر در انجمن پی سی دروید هستند.ارسال مطالب کنایه آمیز ، بازی با کلمات! ، پیام خصوصی توهین آمیز ، خرد کردن شخصیت افراد و هرگونه بحثی که نشان از بی ادبی و تمسخر دیگران باشد در این انجمن جایی ندارد و بلافاصله کاربر خاطی اخراج خواهد شد. 13- کاربران بسیاری هستند که حتی نمیدانند که روش کار یک انجمن به چه شکل است و یا سوالات خیلی مبتدی میپرسند لذا هیچ کاربری حق جسارت به این دسته از کاربران را نداشته و باید با احترام و با صبر و حوصله پاسخ کاربران و راهنمایی لازم داده شود. انجمن تخصصی اندروید پی سی دروید
  7. 1 like
    به این مسیر برید و Theme را تغییر بدین File-> settings in that choose IDE settings-> Appearance
  8. 1 like
    چه Theme ساختید ؟ میشه یک اسکرین شات قرار بدین از اندروید استودیو ؟
  9. 1 like
    مقدار sum بصورت int هست. sum رو ب string تبدیل کنید بعد در تکست ویو ست کنید
  10. 1 like
    برای اینکار میبایستی با VIewPager اینکار رو پیاده سازی کنید.بدین صورت 1- ابتدا لایوت زیر را در رابط کاربری خود اضافه کنید <android.support.v4.view.ViewPager android:id="@+id/pager" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" /> 2-سپس یک فرگمنت را ایجاد کنید FragmentOne public class FragmentOne extends Fragment { public FragmentOne() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_one, container, false); } } 3- رابط کاربری فرگمنت fragment_one.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#D81B60" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Fragment One" android:textSize="40dp" android:textStyle="bold" android:textColor="#fff" android:layout_centerInParent="true"/> </RelativeLayout> 4- ساخت Adapter برای ViewPager و ایجاد آیتم ها ublic class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager viewPager = (ViewPager) findViewById(R.id.pager); ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); // Add Fragments to adapter one by one adapter.addFragment(new FragmentOne(), "FRAG1"); adapter.addFragment(new FragmentTwo(), "FRAG2"); adapter.addFragment(new FragmentThree(), "FRAG3"); viewPager.setAdapter(adapter); TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); } // Adapter for the viewpager using FragmentPagerAdapter class ViewPagerAdapter extends FragmentPagerAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmentTitleList = new ArrayList<>(); public ViewPagerAdapter(FragmentManager manager) { super(manager); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } } }
  11. 1 like
    متد سازنده ، متدی است هم نام کلاس که در هربار ايجاد نمونه‌اي جديد از آن كلاس، بصورت خودكار فراخواني مي‌گردد.هدف از متد سازنده مقدار دهی کردن اعضای کلاس در زمان ایجاد نمونه ای جدید از کلاس است. متد سازنده همیشه دارای سطح دسترسی public است. متد سازنده هیچ مقداری باز نمی گرداند حتی void هم نیست.اگر کلاسی متد سازنده نداشته باشد جاوا به صورت پیش فرض یک متد سازنده برای آن در نظر می گیرد. استفاده کردن از متد سازنده اجباری نیست.یک کلاس می تواند دارای چندین متد سازنده باشد. مثال1 : class Box { double width; double height; double depth; // This is the constructor for Box. Box() { System.out.println("Constructing Box"); width = 10; height = 10; depth = 10; } double volume() { return width * height * depth; } } class BoxDemo6 { public static void main(String args[]) { Box mybox1 = new Box(); Box mybox2 = new Box(); double vol; vol = mybox1.volume(); System.out.println("Volume is " + vol); vol = mybox2.volume(); System.out.println("Volume is " + vol); } } Output Constructing Box Constructing Box Volume is 1000.0 :مثال ۲ class Box { double width; double height; double depth; // This is the constructor for Box. Box(double w, double h, double d) { width = w; height = h; depth = d; } double volume() { return width * height * depth; } } class BoxDemo7 { public static void main(String args[]) { Box mybox1 = new Box(10, 20, 15); Box mybox2 = new Box(3, 6, 9); double vol; vol = mybox1.volume(); System.out.println("Volume is " + vol); vol = mybox2.volume(); System.out.println("Volume is " + vol); } } Output Volume is 3000.0 Volume is 162.0
  12. 1 like
    پایگاه داده SQLite یکی از راه های ذخیره داده های برنامه شما به صورت محلی در اندروید است. در این پایگاه داده من میخوام به شما یک راه ساده تر بهنشان دهم. با استفاده از Sugar ORM . به طور معمول با استفاده از SQLite در اندروید، مقدار زیادی از کد های boilerplate مورد نیاز بوده که زمان قابل توجهی صرف می شود. اما با Sugar ORM، همه ی شما نیاز به یک مدل (Bean) دارید: (Add a new note (save : اضافه کردن Delete note : حذف کردن Modify : تغییرات در ابتدا کتابخانه زیر را اضافه کنید : compile 'com.github.satyan:sugar:1.4' تنظیمات زیر را وارد منیفست کنید: <application android:name="com.orm.SugarApp" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" > … <meta-data android:name="DATABASE" android:value="notes.db" /> <meta-data android:name="VERSION" android:value="1" /> <meta-data android:name="QUERY_LOG" android:value="true" /> <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.grafixartist.noteapp" /> </application> یک مدل (Bean) کلاس شما نیاز دارید که به صورت زیر باشد : public class Note extends SugarRecord { String title, note; long time; // Default constructor is important! public Note() { } public Note(String title, String note, long time) { this.title = title; this.note = note; this.time = time; } … // Getter setters here } برای Create کردن کد زیر را وارد کنید : Note note = new Note(title, desc, time); note.save(); برای Update کردن کد زیر را وارد کنید : Note note = Note.findById(Note.class, id); note.title = “updated title here"; note.save(); برای Delete کردن کد زیر را وارد کنید : Note note = Note.findById(Note.class, id); note.delete(); برای بدست آوردن فهرست همه لیست ها : List<Note> notes = Note.listAll(Note.class); Query برای این کار 2 راه برای انجام این کار وجود دارد. بیایید مثال را مقایسه کنیم: استفاده از Raw Query : List<Note> notes = Note.findWithQuery(Note.class, "Select * from Note where name = ?", "mynote"); استفاده از Query Builder : Select.from(Note.class) .where(Condition.prop("title").eq("mynote"), Condition.prop("description").eq("notedesc")) .list();
  13. 1 like
    این متد را اجرا کنید ublic boolean isStoragePermissionGranted() { if (Build.VERSION.SDK_INT >= 23) { if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { Log.v(TAG,"Permission is granted"); return true; } else { Log.v(TAG,"Permission is revoked"); ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); return false; } } else { //permission is automatically granted on sdk<23 upon installation Log.v(TAG,"Permission is granted"); return true; } } Call back نتیجه Permission @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(grantResults[0]== PackageManager.PERMISSION_GRANTED){ Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]); //resume tasks needing this permission } }
  14. 1 like
    کتاب آموزشی Kotlin Language Documentation عنوان کتاب:Kotlin Language Documentation حجم:1.42 مگابایت نویسنده: Kotlin چرا این کتاب را بخونم: Kotlin provides the ability to target JavaScript. It does so by transpiling Kotlin to JavaScript. The current implementation targets ECMAScript 5.1 but there are plans to eventually target ECMAScript 2015 also. When you choose the JavaScript target, any Kotlin code that is part of the project as well as the standard library that ships with Kotlin is transpiled to JavaScript. However, this excludes the JDK and any JVM or Java framework or library used. Any file that is not Kotlin will be ignored during compilation. The Kotlin compiler tries to comply with the following goals: Provide output that is optimal in size Provide output that is readable JavaScript Provide interoperability with existing module systems Provide the same functionality in the standard library whether targeting JavaScript or the JVM (to the largest possible degree). You may want to compile Kotlin to JavaScript in the following scenarios: Creating Kotlin code that targets client-side JavaScript Interacting with DOM elements. Kotlin provides a series of statically typed interfaces to interact with the Document Object Model, allowing creation and update of DOM elements. Interacting with graphics such as WebGL. You can use Kotlin to create graphical elements on a web page using WebGL. Creating Kotlin code that targets server-side JavaScript Working with server-side technology. You can use Kotlin to interact with server-side JavaScript such as node.js Kotlin can be used together with existing third-party libraries and frameworks, such as JQuery or ReactJS. To access third-party frameworks with a strongly-typed API, you can convert TypeScript definitions from the Definitely Typed type definitions repository to Kotlin using the ts2kt tool. Alternatively, you can use the dynamic type to access any framework without strong typing. Kotlin is also compatible with CommonJS, AMD and UMD, making interaction with different module systems straightforward. To find out how to start using Kotlin for JavaScript, please refer to the tutorials. دانلود کتاب kotlin-docs.pdf
  15. 1 like
    تو کدهای php یه شرط بزارین که اگه کوئری به درستی اجرا شد، یه پیغام echo کنه با محتوای true و اگه کوئری اجرا نشد یه پیغام echo کنه با محتوای false. حالا در جاوا در متد OnRespone یه شرط بزارین که اگه if(request.equals("true"){ // here you can write your code } اگر هم ریسپانس false باشه در متد onErrorListener میتونید کدهای مربوط به ثبت نشدن رو بنویسید
  16. 1 like
    دوستان بالاخره تونستم مشکل کاراکتر فارسی رو حل کنم. زمانی که ما در url داده ها رو میزاریم و میفرستیم بعضی موبایلا اگه کاراکتر فارسی در url باشه درست میفرستن اما بعضی موبایلا کاراکترو درست نمیفرستن. بهترین راه حل اینه ک اول کاراکترها ب utf8 تبدیل بشن و بعد فرستاده بشن.
  17. 1 like
    کدام اپلیکیشن را میخواهید دانلود کنید که این اتفاق میوفته ؟
  18. 1 like
    در این مقاله آموزشی قصد داریم بیاموزیم که به چه صورتی میتوانیم از کلاس و Property های آن در Kotlin استفاده کنیم اما قبل از اینکه از این آموزش را مطالعه کنید در جلسات قبلی مفاهیم اولیه زبان کاتلین را قرار داده ایم و میتوانید آنها را مطالعه کنید Class ها در کاتلین : اگر شما قبلا به مفاهیم برنامه نویسی شی گرا OOP در بقیه زبان های برنامه نویسی آشنا هستید اینکار برای شما آشنا خواهد بود تا بتوانید کلاس ها در کاتلین را فرابگیرید در جاوا برای اینکه بتوانید هر کلاسی را ایجاد کنید حتما باید کلاس را تعریف کنید و سپس سازنده اش را و سرانجام متدهای setter و getter را در کاتلین تمامی این پارامترها به فیلدها اعمال شده و نیازی به تعریفشان نیست این واضح است که کدهای جاوا 11 خط میباشد و کاتلین فقط یک خط. این نشان میدهد چقدر زبان کاتلین میتواند جذاب باشه و در زمان صرفه جویی کرده و کدهای کمتری نوشته شود. یک نکته مهم برای تعریف کلاس ها در کاتلین این میباشد که نیازی به تعریف public در تعریف قبل از نام class نیست و بصورت پیشفرض تمامی کلاس ها public هستند Properties ویژگی های کلاس در کاتلین بطور عمومی متغیرهای داخل کلاس پرایویت هستند و بطور مستقیم نمی توانید به آنها دسترسی داشته باشید. برای دسترسی به فیلدها باید ست و گت را ایجاد کنید در زبان های شی گرا این ترکیب شناخته شده ای برای فیلدها هستش ،در کاتلین متدها جایگیزین مقادیر میشوند شما میتوانید به دو صورت مشخصات را تعریف کنید اگر شما با کلمه val تعریف کنید فقط توانایی Read-only دارد یعنی قابل نوشتن نیست اما اگر بصورت var تعریف کنید بصورت نوشتنی و خواندنی میباشد مثال زیر مشخص میکند به چه صورتی میتوانیم یک Object را تعریف و از آن استفاده کنیم نتیجه گیری : در این آموزش آموختیم که به چه صورتی میتوانیم کلاس ها را تعریف و به Property های آن دسترسی پیدا کرد
  19. 1 like
    سلام دوستان اینجام میخوام آموزشی بدم که میتونه خیلی کاربرد داشته باشه شاید در برخی مواقعه دیده باشید که برخی از برنامه ها همراه با متن معمولی لینک قرار میدن اینجا میخوام آموزش بدم که چطور این کار رو میشه انجام داد. برای این کار ما از کتاب خانه Linkify استفاده میکنیم میتونید مستندات کاملش رو از ادرس زیر مطالعه کنید. https://developer.android.com/reference/android/text/util/Linkify.html خوب ما اول باید یک pattern ایجادکنیم کار این pattern چی هستش ما میایم متنی رو که میخوایم لینک دار کنیم رو به این pattern میدیم Pattern pattern= Pattern.compile("جواد زبیدی زاده"); خب حالا اگر ما بخوایم لینک به وسیله scheme خود برنامه خودمون باز بشه یا به وسیله هر برنامه دیگه میاد متنی رو که داخل pattern نوشتیم رو ارسال میکنه اگر بخوایم متن دلخواهی بفرستیم میاید از خاصیت TransformFilter استفاده میکنیم به مثل زیر توجه کنید مثال : اگر عنوان لینک نام و نام خانوادگی کاربر باشه(جواد زبیدی زاده) و بخوایم نام کاربری رو بفرستیم (Javadzobeidi) میایم به صورت زیر انجام میدیم Linkify.TransformFilter username = new Linkify.TransformFilter() { @Override public String transformUrl(Matcher match, String url) { return "javadzobeidi"; } }; حالا باید ویوی که متن توی اون هستش رو هم تعریف کنیم که اینجا Textview هستش TextView event_message = (TextView)itemView.findViewById(R.id.event_message); event_message.setText("جواد زبیدی زاده یک پیغامی برای شما ارسال کرده است"); خب حالا وقتش شده لینک رو ایجاد کنیم گفتیم از کلاس Linkify استفاده میکنیم Linkify.addLinks(event_message,pattern,"myScheme://?username=",null,username); توی کد بالا اگر توجه کنید من یک scheme ایجاد کردم myScheme://?username= این scheme هستش که من با اون اطلاعات رو میگیرم خب اگر تا اینجا درست انجام داده باشید لینک همراه با متن نمایش داده میشه ولی خب یک زیر خط همراه لینک به نمایش در میاد که بهش میگن Underlines برای حذف این زیر خط باید کلاس و تابع زیر رو بنویسید /** * Delete Under Line From Link in Text View Class */ public static class URLSpanNoUnderline extends URLSpan { public URLSpanNoUnderline(String p_Url) { super(p_Url); } public void updateDrawState(TextPaint p_DrawState) { super.updateDrawState(p_DrawState); p_DrawState.setUnderlineText(false); } } /** * Delete Under Line From Link in Text View method * Enterd Text View Get text */ public static void removeUnderlines(Spannable p_Text) { URLSpan[] spans = p_Text.getSpans(0, p_Text.length(), URLSpan.class); for(URLSpan span:spans) { int start = p_Text.getSpanStart(span); int end = p_Text.getSpanEnd(span); p_Text.removeSpan(span); span = new URLSpanNoUnderline(span.getURL()); p_Text.setSpan(span, start, end, 0); } } و کد زیر رو کنار کد ایجاد لینک قرار بدید // Make sure the TextView was instantiated correctly if(event_message != null) { removeUnderlines((Spannable)event_message.getText()); } و من الله التوفیق
  20. 1 like
    براساس مستندات خود گوگل قراره از ورژن 3 به بالاتر بطور کامل قرار میگیره. قبلش با پلاگین هستش . اما شاید نسخه بتا برای اپدیت های زیر 3 هم بیاد که کاتلین رو ساپورت کنه
  21. 1 like
    نصب پلاگین Kotlin در اندروید استودیو در صورتی که نسخه اندروید استودیو کمتر از 3 باشد حتما میبایستی پلاگین Kotlin را در اندروید استودیو نصب کنید از منوی پلاگین های intellij گزینه plugin را نصب کنید روی گزینه Install jetBrains Plugin کلیک کنید سپس در کادر زیر Kotlin را جستجو کنید سپس گزینه install را انتخاب کنید تا پلاگین Kotlin بر روی اندروید استودیو نصب کنید و بتوانید از Kotlin در برنامه نویسی اندروید استفاده کنید
  22. 1 like
    سلام شما باد با مبحث relation در mysql رو مطالعه کنید این مبحث رو دنبال کنید صد در صد به جوابتون میرسید
  23. 1 like
    سلام شما میتونید کرسر ماوس رو کنار حرف R بزارید بعد کلید های ترکیبی alt+enter روبزنید اگر رفع نشد باید کلیر کش و سپس ریبیلد کنید این ویدئو رو میتونید بینید http://www.aparat.com/v/PCMaE
  24. 1 like
    وقتی R خطا میگیره حتما باید res رو چک کنید که دارای خطا نباشد
  25. 1 like
    1- شما باید یک دیتابیس و سه تا جدول ایجاد کنید 2- برای منطق اینکار شما باید با استفاده از id کاربر اینکار رو انجام بدید به این صورت که هر کاربر میتونه این فیلدها رو داشته باشه id : کد کاربر username : نام کاربری 3- در جدول محصولات: id : کد محصول title: نام محصول 4- یک جدول برای سفارشات ایجاد کنید id : شماره سفارش product_id : شماره محصول user_id : کد کاربر
  26. 1 like
    برای دیتابیس حتما باید در متد onUpgrade دیتابیس رو Upgrade کنید تا اطلاعات از بین نروند و دیتاهای جدید نیز بروز رسانی شوند
  27. 1 like
    کتابخانه BottomNavigationView در داخل کتابخانه deisgn از ورژن 25 به بالاتر وجود دارد داکیومنت گوگل : https://developer.android.com/reference/android/support/design/widget/BottomNavigationView.html برای پیاده سازی استفاده از BottomNavigationView میابیستی مراحل زیر را بطور کامل انجام دهید : 1- ابتدا Dependencyها را در فایل app->build.gradle وارد نمایید compile 'com.android.support:appcompat-v7:25.1.0' compile 'com.android.support:design:25.1.0' compile 'com.android.support:support-v4:25.1.0' 2- فرگمنت ها : همانطور که مطلع هستید برای نمایش تب های هر کدام از گزینه های BottomNavigationView میبایستی فرگمنت های مربوطه را طراحی کرد. در این مثال فرض میگیریم 3 تب داریم پس باید 3 فرگمنت ایجاد کنیم. Fragment 1: fragment_item_one.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemOneFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 1" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemOneFragment extends Fragment { public static ItemOneFragment newInstance() { ItemOneFragment fragment = new ItemOneFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_one, container, false); } } Fragment 2: fragment_item_two.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemTwoFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 2" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemTwoFragment extends Fragment { public static ItemTwoFragment newInstance() { ItemTwoFragment fragment = new ItemTwoFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_two, container, false); } } Fragment 3: fragment_item_three.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemThreeFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 3" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemThreeFragment extends Fragment { public static ItemThreeFragment newInstance() { ItemThreeFragment fragment = new ItemThreeFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_three, container, false); } } 3- منو ها: در این مرحله میبایستی منوها را ایجاد نمایید از مسیر res->menu bottom_navigation_items.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_item1" android:icon="@drawable/ic_account_box_black_24dp" android:title="@string/item_1"/> <item android:id="@+id/action_item2" android:icon="@drawable/ic_account_circle_black_24dp" android:title="@string/item_2"/> <item android:id="@+id/action_item3" android:icon="@drawable/ic_assignment_ind_black_24dp" android:title="@string/item_3"/> </menu> 4- در این مرحله طراحی ظاهر کاربری اکتیویتی اصلی را انجام میدهیم : در این مرحله از تگ BottomNavigationView استفاده میکنیم <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.MainActivity"> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/navigation" android:animateLayoutChanges="true"> </FrameLayout> <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@color/colorPrimary" app:itemIconTint="@color/nav_item_state_list" app:itemTextColor="@color/nav_item_state_list" app:menu="@menu/bottom_navigation_items"/> </RelativeLayout> 5- در این مرحله میبایستی BottomNavigation را در اکتیویتی تعریف نماییم import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation); bottomNavigationView.setOnNavigationItemSelectedListener (new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment selectedFragment = null; switch (item.getItemId()) { case R.id.action_item1: selectedFragment = ItemOneFragment.newInstance(); break; case R.id.action_item2: selectedFragment = ItemTwoFragment.newInstance(); break; case R.id.action_item3: selectedFragment = ItemThreeFragment.newInstance(); break; } FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, selectedFragment); transaction.commit(); return true; } }); //Manually displaying the first fragment - one time only FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, ItemOneFragment.newInstance()); transaction.commit(); //Used to select an item programmatically //bottomNavigationView.getMenu().getItem(2).setChecked(true); } } خروجی : با سپاس فرزاد سرسیفی
  28. 1 like
    سلام برای دیتابیس اگر تغییراتی اعمال کنید Version code دیتابیس را افزایش دهید همچنین وقتی اپ اپدیت میشود اطلاعات پاک نخواهد شد
  29. 1 like
    در متد oncreat() این کد رو اضافه کنید this.inflatedView = inflater.inflate(R.layout.fragment_name, container, false); sendButton = (Button) inflatedView.findViewById(R.id.sendTextButton); نحوه ی تعریف بصورتی ک در کد مشاهده میکنید هست.
  30. 1 like
  31. 1 like
    از ListView خارج کنید و با RecyclerView کار کنید تا مشکل memory کمتر پیش بیاید
  32. 1 like
    بله ، کلاس LocationListener نیازی به AsyncTask نداره
  33. 1 like
    تمای متدهای کلاس log را چاپ نوشته در Log cat میباشد و تفاوت انها : Log.d(); // Debug Log.i(); // Info Log.w(); // Warning Log.e(); // Error
  34. 1 like
    سلام مطمئنا سرگذشت اکثر افراد موفق رو خوندید، خیلی ها تحصیلاتشون رو نصفه و نیمه رها کردن تا دنبال اهدافشون برن. شاید شما هم یکی از اونها باشید... من خودم مرز 31 سالگی رو به تازگی رد کردم ولی هیچوقت نمیگم سنم داره بالا میره و بلکه مهم روحیه هست که باید به هر نحوی اون رو حفظ کنید. ***** اگر واقعا به دنیای اپلیکیشن علاقه دارید و ایده های نابی در ذهنتون هست (هر چند این ایده ها ساده باشن) بهتون پیشنهاد میکنم دنبال یادگیری برنامه نویسی نرید، بلکه با برون سپاری (Out Source) کردن جامه عمل به ایدهاتون بپوشونید. جمله بالا که نوشتم، یکی از گفته های آقای چاد مورتا هست، کسی که بدون هیچ دانش برنامه نویسی، امپراطوری برای خودش بنا کرد و میلیونها دلار با ایده های ساده به جیب زد و همچنان این امپراطوری رو اداره میکنه. در سرگذشت آقای مورتا میخونیم که: از یک تصادف هولناک جان سالم بدرد برد و تا زمانی که مجددا تونست سلامتی کاملش رو بدست بیاره مجبور شد 100 هزار دلار (چیزی در حدود 350 میلیون تومان) هزینه کنه. در حالی که هیچ پولی برای اینکار نداشت و با قرض کردن تونست به زندگی برگرده. سنگ بنای امپراطوری آقای مورتا به این شکل بنا شد که فقط یک ایده به ذهنش رسید و برای عملی کردن ایده چیزی در حدود 1800 دلار (اگر مبلغ رو اشتباه نکنم) از پدرخوانده خودش قرض کرد و ایده رو عملی کرد. **** یعنی برنامه نویس استخدام کرد تا اونها براش کار رو انجام بدن و نتیجه کارش رو گرفت، بعد از انتشار اولین اپ، هزاران دلار کسب درآمد کرد... بهتون پیشنهاد میکنم که کتاب امپراطوری اپ، نوشته چاد مورتا رو بخونید... من دارم از ایده های همین کتاب استفاده میکنم، با اینکه خودم برنامه نویسی میکنم ولی برای ایده های خودم "برنامه نویس" استخدام کردم تا فقط اون ها رو مدیریت کنم... شما هم همین روش رو پیش بگیرید... براتون آرزوی موفقیت میکنم...
  35. 1 like
    سلام شما میتونید کانال رو با استفاده از دستور زیر به کاربر نشون بدید: Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/TVnavad")); startActivity(intent);
  36. 1 like
    Kotlin (کاتلین) یک زبان برنامه‌نویسی‌ست که با استفاده از آن میتوان برنامه نویسی اندروید را توسعه داد. نسخه های اخیر اندروید استودیو به طور رسمی از کاتلین پشتیبانی می‌کنن، مسئله‌ای که در Google IO 2017 اعلام شد. با تشکر انجمن اندروید ایران
  37. 1 like
    در آموزش قبلی آموختیم که زبان کاتلین دارای چه قدرت هایی میباشد .بر همین اساس در این جلسه آموزشی یاد خواهیم گرفت که به چه صورتی بتوانیم از کاتلین در اندروید استودیو استفاده کنیم ابتدا محیط اندروید استودیو را باز کنید Android studio 3.0 تیک گزینه کاتلین را انتخاب کنید و سپس گزینه finish را انتخاب کنید تا پروژه ساخته شود برای ورژن های اندروید استودیو 2 .x به بالاتر شما حتما باید پلاگین کاتلین را نصب کنید از طریق مسیر file->Settings->plugin و گزینه kotlin را جستجو نمایید Project level app.gradle 1- تعریف کردن ورژن kotlin در زمانی که از ورژن های 1.1.3-2 استفاده میکنید 2- Dependency کاتلین را اضافه میکنیم app level app.gradle 1- پلاگن کاتلین اضافه میشود به ماژول ها 2- kotlin یک کتابخاه استاندارد میباشد.برای اینکه بیشتر در مورد این کتابخانه بدانیم از ادرس kotlinlang.org استفاده کنید پسوند فایل های کاتلین kt میباشد. در تصویر زیر تفاوت کاتلین و جاوا مشخص میشود 1- تمامی ارث بری ها با color (دو نقطه) انجام میشود(extends در جاوا) 2- وقتی یک متد overrideمیشود حتما میبایستی از کلمه کلیدی override استفاده کنیم 3- حتما باید بعد از تعریف کرد یک آبجکت از ? (علامت سوال) استفاده کنید. حالا خروجی به این صورت میباشد
  38. 1 like
    سلام متد برای این میباشد که ویجت مورد نظر یک متن داده شود تا نمایش دهید متد برای این میباشد که بتوان به ویجت ها بصورت داینامیک id اختصاص داد،
  39. 1 like
    مشکلم حل شد. کلاس رو داخل اکتیویتی تعریف کردم و اون قسمت که ارسال مقادیر ب اکتیویتی داره رو برداشتم درست شد.
  40. 1 like
    بازه های دید یا zone در برنامه نویسی هستش Publicدر تمامی کلاس ها و پکیج ها Private فقط در کلاس جاری Protected در پکیج جاری و کلاس های پکیج جاری
  41. 1 like
    عملگرها در کاتلین در این جلسه آموزشی قصد داریم که در کاتلین بیاموزیم به چه صورتی میتوانیم از کاتلین استفاده کنیم.اما قبل از اینکه این مطلب آموزشی را شروع حتما آموزشی های زیر را مطالعه نمایید تا بتوانید تمامی مفاهیم پیش رو را بیاموزید Binary operators کاتلین یک زبان قدرتمند برای عملگرهای شرطی میباشد. بقیه زبان ها مشابه جاوا ، کاربر نمی تواند عملگرهای ریاضیات در برای نوع های اصلی استفاده کند اگر شما میخواهید از عملگرها برای ارایه استفاده کنید نمی توانید اینکا را انجام دهید،اما در کاتلین این براحتی ممکن میباشد .کاتلین مجموعه کاملی از عملگرها را شامل میشود اگر شما از کاتلین 1.1 استفاده میکنید میبایستی از متد rem() بجای mod() استفاده کنید و این دستور deprecate شده است data class Test(){ operator fun plus(increment : Int): Test{ return Test(count + increment ) } operator fun times(multiply : Int): Test{ return Test(count + multiply) } } var test=Test(10) println(test+10) //output -> Test(count =20) println(test*2) //output -> Test(count =12) Increment and Decrements بله، ++ و -- عملگرات بسیار کاربردی هستند،اما در کاتلین میتوانید با استفاده از متدهای زیر اینکار را انجام دهید Assignments operators با استفاده از Assignments operators میتوانید مقادیر متغیرها را تغییر داد،شما میتوانید اینکار را با صدا زدن متدهای مربوطه انجام داد Rest of Operators در کاتلین خیلی زیادی متد و کاربردی وجود وجود دارید که در اینجا با تعدادی از آنها آشنا خواهیم شد نتیجه گیری : در این آموزش آموختیم که در کاتلین به چه صورتی میتوان از function های Operator ها استفاده کرد
  42. 1 like
    در این مقاله، میخواهیم یاد بگیریم به چه صورتی میتوانیم متغیر ها را در کاتلین تعریف نماییم قبل از شروع این آموزشی حتما مطلب آموزشی زیر را مطالعه کنید تعریف متغیر ها در کاتلین،همه چیز یک OBject میباشد ،زیرا در کاتلین نوع اصلی نمی توانیم پیدا کنیم تعریف اولین متغیر شما میتوانید براحتی با کلمه کلیدی val یا var متغیر و نوع آن را تعریف کنید var i: Int=1 var d: Double=1.1 var f: Float=1.1F var l : Long=1L var c : Char ='c' var s: String="P30droid" با همین مثال های بالا ما تعداد شی با مقداد دهی اولیه ایجاد کنیم در کاتلین سمی کالن نداریم حافظه متغیر ها در کاتلین همچنین درکاتلین میتوانید متغیر یک متغیر جدید را بدون تعریف نوع آن فقط با مقداردهی یک متغیر دیگر که قبلا تعریف شده است را ایجاد کرد var ii= i+1 var dd= d+2.0 var ff= f+1 var ll= 1+1 var ss=s + "Iranian developers forum" println("ii : $ii , dd: &dd, ff: $ff,ll : &ll,ss : &ss") خروجی ii :2, dd : 3.1, ff :2, ss :P30droid Android Developers forum رشته ها در کاتلین : کار کردن با رشته ها در کاتلین به سادگی آب خوردن هستش var s : "Android" var ss : "My name is $s" // My name is Android var c : s[2] // this will assign character 'i' با صدا زدن کاراکتر & میتوانید به مقدار یک متغیر دسترسی پیدا کرد Type Casting در کاتلین در کاتلی به سادگی میتوانید Type Casting را انجام دهید var i: Int =1 var d: Double = i // Not possible var d : Double = t.toDouble() // Ok
  43. 1 like
    سلام شما باید یک کوئری ادیتور بنویسید که بر اساس فیلد هایی که مقدار گرفتن قسمت where کوئری رو بسازه. منطقی ترین روش این هستش برای مثال private String getCondition(Map<String , Object> params){ StringBuilder condition = new StringBuilder(); if(params.get("name")) condition.append(" NAME=")+params.get("name").toString()+" And "; if(params.get("family")) condition.append(" FAMILY=")+params.get("family").toString()+" And "; if(condition.contain("AND") condition.substring(0,condition.lasIndexOf("And")); if(condition.length()>0) condition.insert(0 , " where "); return condition; } البته این یه نمونه خیلی کوچک و ساده بود و البته به زبان جاوا. میتونید از همچین روشی استفاده کنید
  44. 1 like
    Kotlin چیست؟ Kotlin (کاتلین) یک زبان برنامه‌نویسی‌ست که با استفاده از آن میتوان برنامه نویسی اندروید را توسعه داد. نسخه های اخیر اندروید استودیو به طور رسمی از کاتلین پشتیبانی می‌کنن، مسئله‌ای که در Google IO 2017 اعلام شد. kotlin تبدیل به bytecode جاوا میشود پس بنابراین به خوبی java میتونه روی اندروید اجرا بشه و از این نظر تفاوتی وجود نخواهد داشت. و اینکه میشه توی یک پروژه اندروید همزمان از kotlin و java استفاده کرد، بنابراین حتی اگر خیلی کم با کاتلین آشنا هستید باز هم میتونید بخشی از پروژه‌هاتون رو با کاتلین انجام بدید. چرا Kotlin؟ دلیل اول اینکه با کاتلین میتونیم کدهایی تمیزتر و خواناتر بنویسیم. میدونیم که زبان جاوا boiler code زیاد داره. boiler code به کدهایی میگیم که جز syntax زبان هستن ولی همیشه بدون دلیل تکرار میشن و میشد حذفشون کرد.
  45. 1 like
    برای انجام پرداخت درون برنامه ای نیاز است تا یک کانکشن با مارکتی که در آن محصولات درون برنامه ای خود را به فروش گذاشته اید برقرار کنید. پس برای اینکه مطمئن شوید طرف دیگر کانکشن مارکت است نه برنامه هک پس باید نام پکیج برنامه را چک کنید تا در صورت مغایرت با نام پکیج مارکت مورد نظر شما جلوی پرداخت درون برنامه ای را بگیرید و از کاربر بخواهید ابتدا برنامه هک را از دستگاه اندرویدی خود آنیستال کند و سپس اقدام به خرید برنامه کند. قطعه کد زیر این کار را انجام می دهد.در این قطعه کد مارکت را برای مثال بازار قرار داده ایم. IInAppBillingService mService; ServiceConnection mServiceConn = new ServiceConnection() { public void onServiceDisconnected(ComponentName name) { mService = null; } public void onServiceConnected(ComponentName name, IBinder service) { if ( !"com.farsitel.bazaar".equals(name.getPackageName())) { Toast.makeText(getApplicationContext() , "ابتدا برنامه هک پرداخت درون برنامه ای را حذف و سپس اقدام به خرید کنید!", Toast.LENGTH_SHORT).show(); finish(); } else { mService = IInAppBillingService.Stub.asInterface(service); } } }; این قطعه کد در جایی قرار می گیرد که کانکشن می خواهد برقرار شود. امیدواریم این آموزش برای شما دوستان عزیز مفید واقع شود.
  46. 1 like
    من یک جایی خوندم که 100 % از اپ های توی گوگل پلی هک شدن تازه اونها از ما بهتر هستند البته هکر هاشونم دست کمی ندارن اون دیگه بر میگرده به دولت که اجازه نده اینطوری بشه و اینکه خود مردم رعایت بکنن و حق ما توسعه دهنده ها رو ضایع نکنن.
  47. 1 like
    دوستان اگه ممکنه کد های کل اکتیویتی خرید +کد های بالا رو بدن
  48. 1 like
    سلام. ممنونم بابت این نکته بسایر زیبایی که عنایت فرمودید برادر.
  49. 1 like
    همه مارکت ها از مستندات گوگل پلی استفاده می کنند اما خوب این مستندات در مورد پرداخت درون برنامه دارای باگ هایی هستند که حتی با سرچ کردن می توان تعدادی از این باگ ها را در سایتها پیدا کنید حالا لاکی پچر و امثال ان از همین باگ ها استفاده کرده و خرید را جعل می کنند.از طرفی مایکت به جای این که مثل بازار موضوع را رها کند تا خود توسعه دهنده به فکر ان باشد امده و باگها را مرتفع کرده. حتی خیلی از توسعه دهندگان خود این باگ ها را برای خود رفع می کنند. شاید این هم یکی از احمال کاری های بازار باشد که به توسعه دهنئگان احترام لازم را نمی گذارد و از آنها حمایت نمی کند.
  50. 1 like
    سلام وقتی می خواهیم از طریق درون پرداختی کافه بازار پرداخت کنیم، قبل از باز شدن پرداخت لاکی پچر میاد!! ولی درون پرداختی مایکت اینجوری نیست، خیال راحت صفحه پرداخت میاد، در حالی که لاکی پچر توی گوش نصب هست تفاوت درون پرداختی کافه بازار با مایکت چیه؟ در ضمن کد سورس دورن پرداختی مثل همند، اصلا فرقی نداره ،پس تفاوتش چیست؟؟؟ من به کافه بازار پیام دادم که چرا درون پرداختی مثل مایکت نمی کنی؟ بهم جواب داد که به گروه فنی ارجاع داده شد هنوز که هیچی درست نکرده! جای پای کافه بازار می لنگه