最佳实践 - 将您的应用程序到Android共享菜单(Best Practice - Adding

2019-07-29 14:32发布

我的应用程序通过TCP连接发送的文件(所有MIME类型),所以我想我的应用程序出现在Android共享菜单。

我增加了以下意图过滤器,以我在活动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是要在点击分享行动启动

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;
}

上述方法准确取回,我已经错过了或者是有这样做的更好的办法图像/视频和其他files.Is有什么的绝对路径?

除了Share菜单,有一个Send Via菜单上我手机。

有没有办法让我的应用程序在此列表中?

Answer 1:

我试图解决这个问题,我敢肯定,三星的画廊用来通过菜单共享一些自定义操作。 考虑到所有的上市申请被预装的人很明显,三星与列出的所有应用程序开发人员同意使用它的自定义意图操作帐户。

我也试图联系三星,他们尚未答复。



Answer 2:

我在这里列出它是如何在菜单中得到:

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

基本上,它让你的MIME类型/:

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

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

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

如果你这样做,并没有显示出来,这意味着他们使用的是意图菜单,这是一个自定义的共享列表,所以你也不能强迫你到底。



Answer 3:

我想你是从外面的应用程序共享图像。 PLZ定义intentfiler的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>


文章来源: Best Practice - Adding your App to the Android Share Menu