Найти тему
InnaTomeya

Работа с панелью приложения (Передача информации)

Рассмотрим передачу информации из нашего приложения в другие.

Создаем новый проект

-2
-3

Чтобы в дальнейшем добавить действие для передачи информации на панель нашего приложения, включаем его в файл ресурсов strings.xml (Это для того, чтобы выводить название, если элемент окажется в доп. области)

-4

<resources>

    <string name="app_name">Peredacha</string>

    <string name="share">Share</string>

</resources>

Создаем папку, где будем создавать файл для передачи информации

-5
-6

В файле menu_main.xml который мы создали добавляется действие для передачи информации

-7

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/share"
android:title="@string/share"
app:showAsAction="ifRoom"
app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"/>

</menu>

Где элемент <item> - определяет действие,

app:showAsAction="ifRoom" – выводит провайдера действия передачи информации на нашу панель,

"androidx.appcompat.widget.ShareActionProvider" – класс провайдера действия передачи информации,

"ifRoom" – элемент для размещения на панели приложения, если позволяет место, если же места нет, то размещает в доп. области

ПОЛНЫЙ КОД ФАЙЛА MainActivity.java

package peredacha.innatomeya.peredacha;



import androidx.appcompat.app.AppCompatActivity;

import androidx.appcompat.widget.ShareActionProvider;

import androidx.core.view.MenuItemCompat;



import android.content.Intent;

import android.view.Menu;

import android.view.MenuItem;



import android.os.Bundle;



public class MainActivity extends AppCompatActivity {



private ShareActionProvider shareActionProvider;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.
activity_main);

    }

    @Override

 public boolean onCreateOptionsMenu(Menu menu){

        getMenuInflater().inflate(R.menu.
menu_main, menu);

        MenuItem menuItem = menu.findItem(R.id.
share);

        shareActionProvider = (ShareActionProvider) MenuItemCompat.
getActionProvider(menuItem);

        setShareActionIntent("https://innatomeya.ru/");

        return super.onCreateOptionsMenu(menu);

    }

    private void setShareActionIntent(String text){

        Intent intent = new Intent(Intent.
ACTION_SEND);

        intent.setType("text/plain");

        intent.putExtra(Intent.
EXTRA_TEXT, text);

        shareActionProvider.setShareIntent(intent);

    }

}

Где public boolean onCreateOptionsMenu(Menu menu) – реализация этого метода добавляет элементы действия из файла меню на панель нашего приложения,

getMenuInflater().inflate(R.menu.menu_main, menu); - объект меню,представляющий файл ресурсов меню в языке Java,

shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem); - получаем ссылку на провайдера действия передачи информации и присвоение ей приватной переменной,

shareActionProvider.setShareIntent(intent); - создаем метод, который создает интент и передает его провайдеру действия передачи информации,

setShareActionIntent("https://innatomeya.ru/"); - задаем текст который передается провайдером действия передачи информации

В Telegram канале находятся проекты

https://t.me/innatomeya_STM32_Linux