استقبال بيانات من تطبيقات أخرى برمجة اندرويد

بسم الله الرحمن الرحيم

درس اليوم مفيد ومهم جداً .. في تلقي بيانات ( صور – نص – صور متعددة ) من تطبيقات أخرى, ليتم مشاركتها في تطبيقك والتصرف بها .. تعديل تكبير تحرير كلي .. يمكنك التصرف بها كما تريد. الدرس مهم للذين يريدون إنشاء تطبيقات تحرير, تعديل وتصميم صور, أو مشاركة النصوص لتوزيعها, نشرها .. إلخ.

في البداية الدرس بشكل كلي يعتمد على ما يسمى بـ Intent و هي من الأساسيات لنظام اندرويد. وأعتقد انها شرحت كثيراً في المدونة وصفحتنا على الفيس بوك. فهي النية أو القصد ولها أستخدامات كثيرة .. للتنقل بين تطبيقات أو بين واجهات من نفس التطبيق.

  • أكثر من يستفيد من هذا الدرس لم يريد برمجة تطبيق اجتماعي وتفاعلي مع المستخدمين.

اولاً سوف نستخدم تصريحات الانتنت ACTION_SEND في داخل ملف AndroidManifest.xml بواسطة العنصر <intent-filter>.

<activity android:name=".MainActivity">
<!-- انتنت معالجة handling incoming للاستقبال النص  -->                  
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
 
                <category android:name="android.intent.category.DEFAULT" />
 
                <data android:mimeType="text/plain" />
            </intent-filter>
<!-- انتنت معالجة handling incoming للاستقبال الصورة  --> 
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
 
                <category android:name="android.intent.category.DEFAULT" />
 
                <data android:mimeType="image/*" />
            </intent-filter>
<!-- انتنت معالجة handling incoming للاستقبال صور متعددة  --> 
            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE" />
 
                <category android:name="android.intent.category.DEFAULT" />
 
                <data android:mimeType="image/*" />
           
            </intent-filter>
</activity>

نحن سوف نستخدم فقط استقبال صورة + نص .. أما الصور المتعددة فهي اختيارية لك في حال أردت استخدامها.

وسوف نعطي تصاريح للتطبيق / قراءة + كتابة على الذاكرة SD من أجل حفظ الصورة.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

* الان جانب التنسيق في ملف الواجهة Layout > تواصل معنا أشخاص يريدون منا الاهتمام بشكل أكبر بالتنسيق لذلك سوف نحاول قدر الإمكان …

نفتح ملف activity_main.xml ونضع فيه نص و صورة .. في حالة مشاركة نص للتطبيق سوف يتغير إلى النص الذي تم مشاركته وكذلك الصورة.

سوف أستخدم ScrollView من أجل النص, وسوف أعطي خاصية الوزن للنص وللصورة 50%.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    android:padding="20dp">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:id="@+id/scrollView" >

        <TextView
            android:id="@+id/sentText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:text="لا يوجد نص هنا قد تمت مشاركته" />
    </ScrollView>

    <ImageView
        android:id="@+id/sentImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:layout_gravity="center"
        android:src="@drawable/no_image">
    </ImageView>

</LinearLayout>

الصورة المستخدمة no_image

معاينة للتنسيق :

how_to_receive_simple_data_from_other_apps_android_1

الآن نذهب إلى الجزء البرمجي MainActivity.java // سوف نستخدم الانتنت كما ذكرنا سابقاً .. كذلك سوف نستخدم الدوال :

  • hanlde incoming text data
  • handle incoming Image

سوف أدرج لكم الكود وأضع عليه سطور التعليقات.

MainActivity.java

package com.andrody.first_app;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    // عرفنا متغيرات جديدة .. النص والصورة
    private ImageView imageView;
    private TextView textview;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // ربط المتغيرات بمعرفات id
        imageView = (ImageView) findViewById(R.id.sentImage);
        textview = (TextView)findViewById(R.id.sentText);
        // الحصول على الانتنت في بداية تشغيل التطبيق
        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); // التعامل مع النص
            } else if (type.startsWith("image/")) { // اما اذا كان النوع هو صورة
                handleSendImage(intent); // التعامل مع الصورة التي أتت
            }
        }

    }

    // هذه الدالة التي تنفذ عندما يأتي نص من تطبيق آخر
    private void handleSendText(Intent intent) {
        // الحصول على النص من الانتنت
        String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
        // اذا كان النص غير فاسد
        if (sharedText != null) {
            // اعرض النص في textview
            textview.setText(sharedText);
        }
    }

    // هذه الدالة التي تنفذ عندما تأتي صورة من تطبيق آخر
    private void handleSendImage(Intent intent) {
        // الحصول على رابط الصورة من الانتنت
        Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
        // إذا كان رابط الصورة غير فاسد
        if (imageUri != null) {
            // اعرض الصورة التي أتت في imageView
            imageView.setImageURI(imageUri);
        } else{
            // إذا كان الرابط باطل فإظهر رسالة توست تخبرنا بذلك
            Toast.makeText(this, "حدث خطأ، URI غير صالح", Toast.LENGTH_LONG).show();
        }
    }

    }

أرجوا أن يكون كل شيء مفهوم فالأمر بسيط إن شاء الله ..

معاينة من تطبيق اليوم : ( انقر على الصورة لتكبيرها )

التالي السابق
how_to_receive_simple_data_from_other_apps_android_2
how_to_receive_simple_data_from_other_apps_android_3
التالي السابق

نرجوا مشاركة المواضيع ونشرها لتعم الفائدة .. وانتظرونا بكل جديد ومفيد وحصري .. والسلام عليكم 🙂

 

عن عبدالقادر عليوي

مواليد 1996 , سوري الجنسية, طالب علم, لدي شغوف كبير في تعلم كل ما يتعلق بالانترنت من تطوير وحماية, أحب القراءة كثيراً .. هدفي نشر العلم بشتى أنواعه ومجالاته, متابع من الدرجة الأولى لـ الدكتور ابراهيم الفقي و الشيخ أحمد ديدات - رحمهم الله -.

شاهد أيضاً

التقنيات التي نستطيع برمجة تطبيقات والعاب الاندرويد بها

هل أنت محتار من أين تريد البدأ في مجال برمجة التطبيقات للهواتف الذكية أو الألعاب عالية الاداء ؟ تعرف في هذا المقال عن اللغات والتقنيات واختر منها ما يناسبك لدخول هذا المجال

تعلم برمجة تطبيق اندرويد لمدونتك البلوجر (1)

هل لديك تدوينة أو موقع إخباري ؟ أو معرض يعرض الكثير من البيانات من وسائط ؟ وبحاجة لعرضها في تطبيق اندرويد ؟ هذه فرصتك من هنا وللمبتدئين تعلم برمجة تطبيق لمدونتك

عرض صورة في التطبيق من فايربيس

بسم الله الرحمن الرحيم اليوم سيكون شرحنا عن كيفية عرض صورة  في التطبيق من قاعدة …

ضع بصمتك بتعليق يعبر عن امتنانك

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.