从电子邮件附件安装APK

时间:2011-01-19 13:51:40

标签: android email apk


每当我通过电子邮件发送.apk文件作为附件,然后从我的电子邮件帐户打开手机中的.apk文件时,我收到解析错误。
但是,如果我将.apk放在我的网站上并提供一个URL,它就像一个魅力。

一个错误?只有我?我做错了吗?
感谢

6 个答案:

答案 0 :(得分:13)

在新的Android版本上工作得很好,因为,如果附件是和apk然后出现一个安装按钮。 (在GMail原生app上)

但是对于较旧的Android版本,您需要和应用程序一样安装电子邮件 这一个:http://www.appbrain.com/app/email-installer/com.best.app.attachment

答案 1 :(得分:2)

我在 Android ICS(4.0.4)时遇到了同样的问题。我建议,如果在设备中配置了Gmail帐户,请不要尝试打开附件(.apk)。相反,在浏览器中打开您的Gmail帐户,打开电子邮件,然后尝试下载附件。 它对我有用:)希望它有所帮助。

答案 2 :(得分:1)

我可以安装从我的Gmail帐户收到的应用程序。我的交换和流行邮件帐户将不允许它。

仅供参考 - 如果您有Astro文件浏览器,请确保禁用“启用浏览器下载”选项。允许下载任何文件类型是一个方便的功能,但它会干扰gmail附件。

答案 3 :(得分:1)

传输和安装的最简单方法是通过电子邮件发送。发送时,将文本设置设置为Unicode文本,如果由于某种原因,在尝试在手机上安装时会出现解析错误。 Astro或另一个文件浏览器应用程序对于从电子邮件下载文件后查找文件很有用,只是尝试了它并且它工作正常。除了Unicode之外我在电子邮件中使用任何其他文本设置时出现了唯一的错误。 Unicode文本和一切安装完美。

答案 4 :(得分:1)

我通过它安装Can't find app to open file时,我开始在Google的Inbox应用上收到错误.apk,但之后我在Gmail尝试了它,它就像一个魅力

答案 5 :(得分:0)

我最近在OSX上从Mail发送apk时遇到了这个问题,但是当从gmail发送时安装了相同的apk。

  

为了调查此问题,我保存了“显示原始”中的输出   gmail用于从gmail和Mail发送的电子邮件。我跑了:

package lucas.app_2001;


import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;
import android.widget.RelativeLayout;


public class Shout extends AppCompatActivity {
    ImageButton b1;
    private static final int SELECT_PICTURE = 1;
    String selectedImagePath;
    RelativeLayout myLayout1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shout);
        b1 = (ImageButton) findViewById(R.id.imageButton);
        myLayout1 = (RelativeLayout) findViewById(R.id.myLayout1);
        findViewById(R.id.imageButton);
               b1.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View arg0) {

                        // in onCreate or any event where your want the user to
                        // select a file
                        Intent intent = new Intent();
                        intent.setType("image/*");
                        intent.setAction(Intent.ACTION_GET_CONTENT);
                        startActivityForResult(Intent.createChooser(intent,
                                "Select Picture"), SELECT_PICTURE);
                    }
                });
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_PICTURE) {
                Uri selectedImageUri = data.getData();
                selectedImagePath = getPath(selectedImageUri);

                b1.setImageResource(selectedImageUri);
            }
        }
    }

    /**
     * helper to retrieve the path of an image URI
     */
    public String getPath(Uri contentUri) {
            String res = null;
            String[] proj = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
            if(cursor.moveToFirst()){;
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                res = cursor.getString(column_index);
            }
            cursor.close();
            return res;
        }
        }
     

并注意到附件内容类型的以下差异:

     

来自gmail:

diff fromGmail.txt fromMail.txt
     来自Mail的

Content-Type: application/vnd.android.package-archive; 
     

我怀疑这种差异是罪魁祸首。

您可以参考我的问题here。我的猜测是,任何发送带有正确内容类型的apk附件的邮件客户端都会通过安装。