سبد (0)

آموزش اندروید-دریافت داده از appها

آن چه در این آموزش فرا می گیرید:

  1. فایل منیفست را به روز رسانی کنید
  2. مدیریت محتوای ورودی

مواردی که باید مطالعه کرده باشید:

  • Intentها و فیلترها

آموزش اندروید - دریافت داده از دیگر Appها

 

همانطوری که برنامه ی شما می تواند به دیگر برنامه ها اطلاعات ارسال کند، همانطور هم می تواند به سادگی از دیگر برنامه ها اطلاعات دریافت کند. در این مورد فکر کنید که کاربران چگونه با برنامه ی شما تعامل پیدا می کنند و چه نوع داده ای می خوهید از دیگر برنامه ها دریافت کنید. برای مثال، یک برنامه شبکه ی اجتماعی احتمالاً علاقمند است از دیگر برنامه ها محتوای متنی مانند آدرس یک صفحه ی وب دریافت کند. برنامه ی +Google هم متن و هم یک یا چند عکس را از دیگر برنامه ها دریافت می کند. با استفاده از این برنامه، کاربر به سادگی می تواند یک پست +Google را با استفاده از برنامه گالری اندروید شروع کند.


فایل منیفست خود را به روز رسانی کنید

فیلترهای Intent به سیستم اطلاع رسانی می کنند که یک برنامه چه intentهایی را دریافت می کند. دقیقاً مانند حالتی که شما یک intent را با actionی با نام ACTION_SEND ایجاد کردید (به آموزش آموزش اندروید-ارسال به دیگر appها مراجعه نمایید)، می توانید برای اینکه برنامه بتواند intentهای این action را دریافت کند فیلترهایی را ایجاد کنید. با استفاده از یک فیلتر intent در فایل منیفست ایجاد نمایید. برای مثال اگر برنامه ی شمامحتوای متنی و یک عکس از نوع خاص و چند عکس با هر نوعی را دریافت می کند، فایل منیفست به صورت زیر خواهد بود:

 

 

 
activityandroid:name=".ui.MyActivity">
   
<intent-filter>
       
<actionandroid:name="android.intent.action.SEND"/>
       
<categoryandroid:name="android.intent.category.DEFAULT"/>
       
<dataandroid:mimeType="image/*"/>
   
</intent-filter>
   
<intent-filter>
       
<actionandroid:name="android.intent.action.SEND"/>
       
<categoryandroid:name="android.intent.category.DEFAULT"/>
       
<dataandroid:mimeType="text/plain"/>
   
</intent-filter>
   
<intent-filter>
       
<actionandroid:name="android.intent.action.SEND_MULTIPLE"/>
       
<categoryandroid:name="android.intent.category.DEFAULT"/>
       
<dataandroid:mimeType="image/*"/>
   
</intent-filter>
</activity>

وقتی دیگر برنامه ها با ایجاد یک intent و ارسال آن به ()startActivity سعی می کنند که هر کدام از این چیزها را دریافت کنند، برنامه ی شما هم به عنوان یک گزینه در پنجره ی انتخاب نمایش داده می شود. اگر کاربر برنامه ی شما را انتخاب کند، activity مربوطه راه اندازی خواهد شد. از این به بعد نحوه ی مدیریت کار و نوشتن کد مربوطه به شما ارتباط دارد.


مدیریت محتوای ورودی

برای اینکه محتوایی که intent ارسال می کند را مدیریت کنید، با متد ()getIntent شروع کنید و شیء Intent را دریافت کنید. بعد از دریافت شیء Intent، می توانید محتوای آن را بررسی کنید تا کاری که باید بعد از آن انجام دهید، مشخص شود. به خاطر داشته باشید که اگر Activity که intent را دریافت می کند می بایست از طریق سایر قسمت های سیستم مانند launcher یا آغازگر، راه اندازی شود، این موضوع حتماً می بایست در زمان بررسی Intent لحاظ شود.

 

 
void onCreate (Bundle savedInstanceState){
   
...
   
// Get intent, action and MIME type
   
Intent intent = getIntent();
   
String action = intent.getAction();
   
String type = intent.getType();

   
if(Intent.ACTION_SEND.equals(action)&& type !=null){
       
if("text/plain".equals(type)){
            handleSendText
(intent);// Handle text being sent
       
}elseif(type.startsWith("image/")){
            handleSendImage
(intent);// Handle single image being sent
       
}
   
}elseif(Intent.ACTION_SEND_MULTIPLE.equals(action)&& type !=null){
       
if(type.startsWith("image/")){
            handleSendMultipleImages
(intent);// Handle multiple images being sent
       
}
   
}else{
       
// Handle other intents, such as being started from the home screen
   
}
   
...
}

void handleSendText(Intent intent){
   
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
   
if(sharedText !=null){
       
// Update UI to reflect text being shared
   
}
}

void handleSendImage(Intent intent){
   
Uri imageUri =(Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
   
if(imageUri !=null){
       
// Update UI to reflect image being shared
   
}
}

void handleSendMultipleImages(Intent intent){
   
ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
   
if(imageUris !=null){
       
// Update UI to reflect multiple images being shared
   
}
}

Note

توجه: حتما دقت فرمایید که داده های ورودی را چک کنید. شما که نمی دانید دیگر برنامه ها چه اطلاعاتی را برای شما ارسال می کنند، برای مثال، ممکن است نوع MIME اشتباه تنظیم شده باشد، سایز عکس بیش از اندازه بزرگ باشد. همچنین یادتان باشد که پردازش اطلاعات باینری را در یک thread دیگر و مجزا از thread اصلی انجام دهید.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه