скрипт Share, работает, но не на всех телефонах.

Программирование на Юнити.

скрипт Share, работает, но не на всех телефонах.

Сообщение KeeperKira 18 июн 2019, 12:59

Всем привет, использую такой скрипт для расшаривания изображения
Синтаксис:
Используется csharp

public class Share : MonoBehaviour
{

    static AndroidJavaClass intentClass;
    static AndroidJavaClass uriClass;
    static AndroidJavaClass unity;
    static AndroidJavaObject currentActivity;
    static AndroidJavaObject uriObject;
    static AndroidJavaObject jChooser;


    static bool IsInit = false;

    static void Init()
    {
        IsInit = true;

        intentClass = new AndroidJavaClass("android.content.Intent");

        uriClass = new AndroidJavaClass("android.net.Uri");

        unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
    }


    public static void ShareImage(string shareText, string imagePath, string subject = "")
    {
#if UNITY_ANDROID

        if (!IsInit)
            Init();
        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");

        intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
       
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), shareText );

        uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + imagePath);
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);
        intentObject.Call<AndroidJavaObject>("setType", "image/*");

        jChooser = intentClass.CallStatic<AndroidJavaObject>("createChooser", intentObject, subject);
        currentActivity.Call("startActivity", jChooser);

#endif
    }
}


Вызываю статическую функцию при нажатии на кнопку. Путь к изображению хранится в папке приложения. И всё даже работает. Но не на всех моделях телефона.
конкретнее на телефоне Huawei PIC LX9 шара не работает а в логах пишется

06-18 14:22:44.160 14153 14185 E Unity : AndroidJavaException: android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.MyCompany.ShareTest/files/Screenshot/testImage.png exposed beyond app through ClipData.Item.getUri()
06-18 14:22:44.160 14153 14185 E Unity : android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.MyCompany.ShareTest/files/Screenshot/testImage.png exposed beyond app through ClipData.Item.getUri()
06-18 14:22:44.160 14153 14185 E Unity : at android.os.StrictMode.onFileUriExposed(StrictMode.java:1975)
06-18 14:22:44.160 14153 14185 E Unity : at android.net.Uri.checkFileUriExposed(Uri.java:2363)
06-18 14:22:44.160 14153 14185 E Unity : at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941)
06-18 14:22:44.160 14153 14185 E Unity : at android.content.Intent.prepareToLeaveProcess(Intent.java:9944)
06-18 14:22:44.160 14153 14185 E Unity : at android.content.Intent.prepareToLeaveProcess(Intent.java:9929)
06-18 14:22:44.160 14153 14185 E Unity : at android.app.Instrumentation.execStartActivity(Instrumentation.java:1622)
06-18 14:22:44.160 14153 14185 E Unity : at android.app.Activity.startActivityForResult(Activity.java:4762)
06-18 14:22:44.160 14153 14185 E Unity : at android.app.Activity.startActivityForResult(Activity.java:4702)
06-18 14:22:44.160 14153 14185 E Unity : at android.app.Activity.startActivity(Activity.java:5123)

Вроде как жалуется на отсутствие прав доступа к изображению, но файл же в папке приложения и доступ должен быть. Вконце концов приложение его само и создало.

Помогите разобраться в чём может быть проблема и как исправить.
KeeperKira
UNец
 
Сообщения: 17
Зарегистрирован: 15 апр 2019, 11:08

Re: скрипт Share, работает, но не на всех телефонах.

Сообщение AngryCat 18 июн 2019, 15:50

Попробуй в Player Settings указать Write Permission на External
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Re: скрипт Share, работает, но не на всех телефонах.

Сообщение KeeperKira 19 июн 2019, 07:57

Попробовал.Увы но нет, не помогает.


Заметил ещё странную особенность. Если я пересылаю просто текст а после этого ещё и изображение то всё работает.Но два сообщения об отпрвке мне не нужны(

Синтаксис:
Используется csharp

        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");

        intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), shareText + "\n" + url);
        currentActivity.Call("startActivity", intentObject);

        uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + imagePath);
        intentObject.Call<AndroidJavaObject>("setType", "image/*");
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);

        jChooser = intentClass.CallStatic<AndroidJavaObject>("createChooser", intentObject, subject);
        currentActivity.Call("startActivity", jChooser);
 
KeeperKira
UNец
 
Сообщения: 17
Зарегистрирован: 15 апр 2019, 11:08

Re: скрипт Share, работает, но не на всех телефонах.

Сообщение KeeperKira 19 июн 2019, 08:11

Решил проблему путём выставления Target API Level < 24
Где то вычитал что для API level 24 и выше для расшаривания файлов нужно применять FileProvider но почемуто моя Юнька не видит класс "android.support.v4.content.FileProvider" в общем на этом свои поиски решения прекращаю. Если кто найдёт универсальное решение прошу выложить сюда, может кому пригодится.
KeeperKira
UNец
 
Сообщения: 17
Зарегистрирован: 15 апр 2019, 11:08

Re: скрипт Share, работает, но не на всех телефонах.

Сообщение KeeperKira 09 авг 2019, 11:12

кажется нашел решение данной проблемы, https://medium.com/@agrawalsuneet/nativ ... 1617db59c2
пока нет возможности проверить данное решение. кому поможет ссылка сообщите о её дееспособности сюда
KeeperKira
UNец
 
Сообщения: 17
Зарегистрирован: 15 апр 2019, 11:08

Re: скрипт Share, работает, но не на всех телефонах.

Сообщение Saltant 03 июл 2020, 17:27

Share работает по ссылке выше со всеми танцами с бубном. А вот ACTION_VIEW - чтоб просто открыть в просмотр галереей например - нет, нужны видимо какие то другие танцы с бубнами, ищу решение второй день, пока без результатов.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10