2010-04-19 107 views
0

这就是我面临的问题:试图做我自己的应用程序更新我从SD卡上的Web服务器下载更新apk,然后启动带有下载路径的Package Installer(在旧应用程序运行时)。在软件包安装程序启动并且用户同意安装应用程序之后,到目前为止,我收到以下消息“MyApp无法安装在此电话上”,并在logcat中显示以下消息: “获取资源价值时没有包标识符数字0x00000000“。我无法找到这种行为的原因,所以请如果有什么我想念的东西指向我!更新问题!

try 
{ 
    BufferedInputStream getit = new BufferedInputStream(new URL("http://mywebserver:8080/myapk.apk").openStream()); 
    FileOutputStream saveit = new FileOutputStream(path); 
    BufferedOutputStream bout = new BufferedOutputStream(saveit,1024); 
    byte data[] = new byte[1024]; 
    int readed = getit.read(data,0,1024); 
    while(readed != -1) 
    { 
     bout.write(data,0,readed); 
     readed = getit.read(data,0,1024); 
    } 
    bout.close(); 
    getit.close(); 
    saveit.close(); 
} 
catch(Exception e) 
{ 
    e.printStackTrace 
} 

回答

0

尝试使用下面的“软件包安装程序”版本的示例代码。 该示例不会解释如何从服务器下载文件。它会假定它已经在一个字节数组中。

byte[] data = dataReadFromServer; 

FileOutputStream outStream = openFileOutput("somename.apk", Context.MODE_WORLD_READABLE); 
outStream.write(data); 
Intent intent = new Intent(); 
String absolutePath = "file://" + getFilesDir().getAbsolutePath() + "/" + 
"somename.apk"; 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(absolutePath), "application/vnd.android.package-archive"); 
startActivity(intent); 
+0

其实这就是我的代码看起来很像,我已经下载的apk文件,然后发送一个意图启动包安装程序。如果我把另一个应用程序的apk,我可以安装它,但我不能这样做,如果我试图安装的apk是当前应用程序的更新版本(我在AndroidManifest.xml中增加versionCode标记) – 2010-04-19 19:28:07

+0

你是否使用这个确切操作:android.content.Intent.ACTION_VIEW? – FiDo 2010-04-19 21:10:09

+0

是的,但这不是问题。当我发现我正在尝试使用debugable = true set更新应用程序时,更新apk已经签名! – 2010-04-20 16:05:57