Подтвердить что ты не робот

Лучшая практика - добавление приложения в меню Android Share

My App отправляет файлы (все типы mime) по TCP-соединению, и поэтому я хотел, чтобы мое приложение отображалось в меню Android Share.

Я добавил следующие фильтры намерений в свою активность в AndroidManifest.xml

<intent-filter ><!--intent filter for single file sharing-->
  <action android:name="android.intent.action.SEND" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="*/*" />
</intent-filter>
<intent-filter ><!--intent filter for sharing multiple files-->
  <action android:name="android.intent.action.SEND_MULTIPLE" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="*/*" />
</intent-filter>

Теперь я добавил это к Activity, который должен быть запущен при нажатии действия Share

Intent intent = getIntent();
if (Intent.ACTION_SEND.equals(intent.getAction()))
{
 Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
 if (uri != null) {
    fileset = new HashSet();
    fileset.add(getPathfromUri(uri));
     }
 }
else if (Intent.ACTION_SEND_MULTIPLE.equals(intent.getAction()))
{
 ArrayList<Uri> uris= intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
 if (uris != null) {
        fileset = new HashSet();
        for(Uri uri : uris)                         
            {
            fileset.add(getPathfromUri(uri));
            }
        }
}

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

public String getPathfromUri(Uri uri) {
 if(uri.toString().startsWith("file://")) 
       return uri.getPath();
 String[] projection = { MediaStore.Images.Media.DATA };
 Cursor cursor = managedQuery(uri, projection, null, null, null);
 startManagingCursor(cursor);
 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
 cursor.moveToFirst();
 String path= cursor.getString(column_index);
 //cursor.close();
 return path;
}

Вышеупомянутый метод правильно извлекает абсолютный путь к изображениям/видео и другим файлам. Есть ли что-то, что я пропустил, или есть лучший способ сделать это?

В дополнение к меню Share на моем телефоне есть меню Send Via. screenshot

Есть ли способ получить мое приложение в этом списке?

4b9b3361

Ответ 1

Я попытался решить эту проблему, и я уверен, что в галерее samsung используются некоторые пользовательские действия для совместного использования через это меню. Принимая во внимание, что все перечисленные приложения являются предустановленными, очевидно, что Samsung согласился со всеми перечисленными разработчиками приложений использовать его пользовательские намерения.

Я также пытался связаться с Samsung и они еще не ответили.

Ответ 2

Я думаю, что вы делите изображения извне приложения. plz определяют тип minetype в файле-планировщике. он отлично работает на моей стороне.

<activity
            android:name=".SharePhotoFromOutSide"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.SEND" />

                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="photo/*" />
            </intent-filter>
        </activity>

Ответ 3

Я описал здесь, как попасть в меню:

http://blog.blundellapps.com/add-your-app-to-the-android-menu/

В основном это имеет ваш mimetype/:

        <intent-filter>
            <action android:name="android.intent.action.GET_CONTENT" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="*/*" />
        </intent-filter>

Если вы это сделаете, и оно не отображается, это означает, что они используют меню намерений, и это настраиваемый список общих ресурсов, поэтому вы не можете заставить вас войти.