درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من
    اطلاعات مطلب
      مدرس/نویسنده
      مهدی عادلی فر
      امتیاز: 242797
      رتبه:6
      111
      196
      285
      1456
      مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم. پروفایل کاربر
      دوره های مرتبط
      دوره های توسینسو دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 17 قسط خریداری کنید
      با خرید این دوره مبلغ 5,445 تومان هدیه بگیرید
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 17 قسط خریداری کنید
      با خرید این دوره مبلغ 8,470 تومان هدیه بگیرید
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      مدرس: ایمان جوادی
      این دوره را در 13 قسط خریداری کنید
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      مدرس: مهدی عادلی فر
      این دوره را در 2 قسط خریداری کنید
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      مدرس: امیر حسین فضلیخانی
      این دوره را در 12 قسط خریداری کنید
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 27 قسط خریداری کنید
      با خرید این دوره مبلغ 8,110 تومان هدیه بگیرید
      دوره آموزشی برنامه نویسی حرفه ای پایتون به زبان ساده
      دوره آموزشی برنامه نویسی حرفه ای پایتون به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 23 قسط خریداری کنید
      با خرید این دوره مبلغ 7,425 تومان هدیه بگیرید
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 78 قسط خریداری کنید
      با خرید این دوره مبلغ 82,245 تومان هدیه بگیرید
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      مدرس: کاظم تقندیکی
      این دوره را در 20 قسط خریداری کنید
      با خرید این دوره مبلغ 7,040 تومان هدیه بگیرید
      دوره آموزشی ساخت ربات تلگرام
      دوره آموزشی ساخت ربات تلگرام
      مدرس: کاظم تقندیکی
      این دوره را در 8 قسط خریداری کنید
      دوره آموزشی طراحی رابط کاربری با JavaFX
      دوره آموزشی طراحی رابط کاربری با JavaFX
      مدرس: حسام رسولیان
      این دوره را در 13 قسط خریداری کنید
      دوره آموزشی Exploit نویسی به زبان Perl
      دوره آموزشی Exploit نویسی به زبان Perl
      مدرس: ایمان جوادی
      این دوره را در 7 قسط خریداری کنید
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      مدرس: کاظم تقندیکی
      این دوره را در 11 قسط خریداری کنید

      بررسی نحوه ارتباط برنامه های اندرویدی با یکدیگر و تبادل داده آنها با هم

      تاریخ 19 ماه قبل
      نظرات 0
      بازدیدها 115
      با سلام به ITPRO های عزیز. در مطلب قبلی گفتیم که می توان در اندروید از یک Activity به activity دیگر رفت. همچنین گفتیم که می توان با استفاده از intent های ضمنی از یک activity داخل برنامه به activity های دیگر رفت. حال می خواهیم در این مطلب بررسی کنیم که آیا یک activity وجود دارد که ما به آن منتقل شویم. یعنی آیا برای intent ما گیرنده ای وجود دارد؟ اگرچه پلتفرم اندروید تضمین می کند که intent های ضمنی با یکی از برنامه باز خواهد شد ولی همیشه باید یک بار ببینید که آیا دریافت کننده ای برای intent شما وجود دارد یا خیر زیرا که اگر دریافت کننده ای برای intent شما پیدا نشود برنامه شما کرش خواهد کرد. برای این که ببینید دریافت کننده ای برای intent شما وجود دارد باید از متد queryIntentActivities استفاده کنید. خروجی این متد یک لیست از activity ها می باشد که اگر لیست خالی باشد به این معنی است که هیچ دریافت کننده ای پیدا نشده است. نحوه استفاده از این متد به شکل زیر است.
      PackageManager packageManager = getPackageManager();
      List activities = packageManager.queryIntentActivities(intent,
              PackageManager.MATCH_DEFAULT_ONLY);
      boolean isIntentSafe = activities.size() > 0;
      
      
      اگر در کد بالا isInstentSave مقدار true باشد به این معنی است که حداقل یک activity وجود دارد که بتواند به عنوان دریافت کننده intent ما باشد. همان طور که گفتیم یک activity دیگر را با استفاده از startActivity آغاز می کنیم. حال تصور کنید که بیش از یک دریافت کننده برای برنامه ما وجود داشته باشد. برای مثال می خواهیم به یک آدرس وب برویم در این صورت در گوشی های اندرویدی معمولا مرورگر خود اندروید و کروم وجود دارد. در این صورت از شما سوال می شود که می خواهید کدام برنامه intent شما را دریافت کنند. مانند تصویر زیر
      بررسی نحوه ارتباط برنامه های اندرویدی با یکدیگر و تبادل داده آنها با هم

      ولی اگر یک برنامه دریافت کننده باشد فقط خود همان برنامه باز خواهد شد. در زیر یک مثال کامل از باز کردن یک محل روی نقشه را می بینید
      // Build the intent
      Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
      Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
      
      // Verify it resolves
      PackageManager packageManager = getPackageManager();
      List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
      boolean isIntentSafe = activities.size() > 0;
      
      // Start an activity if it's safe
      if (isIntentSafe) {
          startActivity(mapIntent);
      }
      
      

      ساخت یک قسمت Share و نمایش app chooser


      در بسیاری از برنامه های اندرویدی یک قسمت وجود دارد که می توان با کمک آن مطالبی را از داخل برنامه به برنامه های دیگری ارسال کرد. برای مثال شما در گالری خود یک عکس می بینید وی می خواهید آن را ارسال کنید. برای برای این کار بر روی گزینه share کلیک می کنید. با کلیک بر روی این گزینه یک صفحه باز می شود و از شما می پرسد که می خواهید با چه برنامه ای این عکس خودتان را بفرستید. در لیستی که به شما نشان می دهد همه ی برنامه هایی که بر روی دستگاه شما نصب است و می تواند قابلیت ارسال داشته باشد را به شما نشان می دهد. اگر شما برنامه جدیدی را هم نصب کرده باشید و قابلیت share را داشته باشد نیز در این لیست خواهد آمد. می خواهیم ببینیم که این قابلیت چگونه است و چطور می توان یک صفحه به این شکل ساخت. برای ساخت این قابلیت از متد createChooser مربوط به intent استفاده می کنیم. به کد زیر دقت کنید.
      Intent intent = new Intent(Intent.ACTION_SEND);
      
      
      // Always use string resources for UI text.
      // This says something like "Share this photo with"
      String title = getResources().getString(R.string.chooser_title);
      // Create intent to show chooser
      Intent chooser = Intent.createChooser(intent, title);
      
      // Verify the intent will resolve to at least one activity
      if (intent.resolveActivity(getPackageManager()) != null) {
          startActivity(chooser);
      }
      
      
      کد بالا ابتدا بررسی می کند که کدام برنامه ها می توانند قابلیت share را داشته باشند سپس آنها را به لیست به شما نشان خواهد داد.

      دریافت نتیجه از یک activity


      تا به اینجای کار ما فقط گفتیم که چگونه یک activity را باز کنیم. ولی این آخر راه نیست. شما تصور بکنید که بتوانید دوربین دستگاه را باز کنید. یا نقشه دستگاه را باز کنید و یا برنامه های دیگر. حال اگر برنامه شما طوری باشد که بعد از باز کردن نتیجه ای را به شما برگرداند باید چه کنیم؟ برای مثال شما نقشه را به کاربر نشان می دهید که یک نقطه را بر روی آن انتخاب کند و یا دوربین را باز می کنید تا یک عکس بگیرد و شما از آن عکس گرفته شده در برنامه استفاده کنید. برای این که بعد از باز کردن یک activity نتیجه به شما بازگردانده شود، برای باز کردن یک activity به جای استفاده از startActivity باید از startActivityForResult استفاده کنید. حال برای این که نتیجه برگردانده شده را دریافت کنید باید یک متد به نام onActivityResult را override نمایید. برای مثال در نظر بگیرید که می خواهیم با کلیک بر روی یک دکمه لیست مخاطبان تلفن باز شود و کاربر بتواند یک مخاطب را باز کرده و برنامه مشخصات آن مخاطب را در برنامه نشان دهد. برای این کار شما در قسمت onClick مربوط به دکمه کد زیر را می نویسید
      Intent contactIntent=new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
      contactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
      startActivityForResult(contactIntent,1);
      
      در کد بالا به intent می گوییم که می خواهیم عمل انتخاب را انجام دهیم و انتخاب از بین مخاطبین ما باشد. و نوع آن را نیز از نوع محتوای گوشی انتخاب می کنیم و در انتها با استفاده از متد startActivityForResult شروع به باز کردن activity مورد نظر می کنیم. ولی یک عدد نیز به همراه intent به متد startActivityForResult ارسال می کنیم و آن عدد چیست؟ آن عدد شماره درخواست ما می باشد. و هنگامی که درخواست ما جواب داده می شود با استفاده از آن عدد تصمیم میگیریم که با نتیجه چکار کنیم. حال باید برای پردازش نتیجه از متد زیر استفاده کنیم. دقت داشته باشید که این متد در کلاس activity وجود دارد و شما باید آن را override نمایید.
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          // چک کردن کد درخواست
          if (requestCode == 1) {
              // چک کردن موفقیت آمیز بودن عملیات
              if (resultCode == RESULT_OK) {
                  // گرفتن مقدار داده ها
                  Uri contactUri = data.getData();
                  // پیدا کردن ستون شماره تلفن مخاطب
                  String[] projection = {Phone.NUMBER};
      
                  //اجرای کوئری برای دریافت شماره تلفن از داخل uri
                  Cursor cursor = getContentResolver().query(contactUri, projection, null, null, null);
                  cursor.moveToFirst();
      
                  // گرفتن مقدار شماره تلفن
                  int column = cursor.getColumnIndex(Phone.NUMBER);
                  String number = cursor.getString(column);
                      Toast.makeText(getApplicationContext(),num,Toast.LENGTH_LONG).show();
      
              }
          }
      }
      
      در کد بالا متد onActivityResult سه عدد ورودی دارد اولی شماره درخواست می باشد که ما هنگام باز کردن activity به آن می دهیم. دوم کد نتیجه ای است که مشخص می کند نتیجه ok بوده است یا خیر و سومی مقدار داده ای است که بازگشت داده شده است که در قالب یک intent می باشد و از آن شماره تلفن به روش بالا خارج شده و نشان داده می شود.ITPRO باشید

      نویسنده: مهدی عادلی فر
      منبع: Itpro
      هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.
      برچسب ها
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      هیچ نظری ارسال نشده است

        برای ارسال نظر ابتدا به سایت وارد شوید

        arrow