Estou fazendo uma aplicação para Android aqui na empresa e já instalei essa aplicação em vários smartphones de clientes.
O problema é que está muito difícil pra atualizar esses softwares porque já são vários aparelhos.
Como que eu posso fazer meu software atualizar automaticamente sem colocar no Android Market? Já tentei colocar numa página na internet, mas os clientes não estão usando cartão de memória em seus aparelhos e não é possível fazer download a partir de uma página.
Estou fazendo uma aplicação para Android aqui na empresa e já instalei essa aplicação em vários smartphones de clientes.
O problema é que está muito difícil pra atualizar esses softwares porque já são vários aparelhos.
Como que eu posso fazer meu software atualizar automaticamente sem colocar no Android Market? Já tentei colocar numa página na internet, mas os clientes não estão usando cartão de memória em seus aparelhos e não é possível fazer download a partir de uma página.
Alguem tem alguma solução simples?
Obrigada[/quote]
Não é possível fazer o download provavelmente o aparelho não permite instalar aplicativos de terceiros?
Se for isso não vejo outra solução a não ser instruir seus usuários em como alterar a opção nas configurações do aparelho.
[quote=vargas]Não é possível fazer o download provavelmente o aparelho não permite instalar aplicativos de terceiros?
Se for isso não vejo outra solução a não ser instruir seus usuários em como alterar a opção nas configurações do aparelho.[/quote]
Olá vargas!
Com relação aos smartphones, o android não permite download de sites sem um cartão de memória. Eu queria que meu software atualizasse quando tivesse alguma atualização disponivel, assim como acontece com outros softwares vinculados ao Android Market, mas não estou encontrando solução.
private static final String RELEASE = "app.apk";
public static void update(Context context) {
try {
URL url = new URL(UrlMaker.getAtualizacaoURL(context));
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
final String PATH = "/data/data/br.com.tdta.service/files/" + RELEASE;
FileOutputStream fos = new FileOutputStream(new File(PATH));
InputStream is = c.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.close();
is.close();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(PATH)), "application/vnd.android.package-archive");
context.startActivity(intent);
} catch (IOException ex) {
Toast.makeText(context.getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
}[/code]
E está dando este erro:
Starting activity: Intent { act=android.intent.action.VIEW dat=file:///data/data/br.com.tdta.service/files/app.apk typ=application/vnd.android.package-archive cmp=com.android.packageinstaller/.PackageInstallerActivity }
Activity pause timeout for HistoryRecord{44fee720 br.com.tdta.service/.view.AtualizaDadosFrame}
Unable to open zip '/data/data/br.com.tdta.service/files/app.apk': Permission denied
to open Zip archive '/data/data/br.com.tdta.service/files/app.apk'
Unable to read AndroidManifest.xml of /data/data/br.com.tdta.service/files/app.apk
java.io.FileNotFoundException: AndroidManifest.xml
failed to open Zip archive '/data/data/br.com.tdta.service/files/service-release.apk'
Unable to read AndroidManifest.xml of /data/data/br.com.tdta.service/files/service-release.apk
java.io.FileNotFoundException: AndroidManifest.xml
at android.content.res.AssetManager.openXmlAssetNative(Native Method)
Eu mandei escrever o tamanho do APK no dispositivo, e escreveu somente 657, o que é muito estranho, já que o arquivo original tem 130.897 bytes.
Estou verificando o código onde eu baixo o arquivo.
Funcionou aqui.
O problema da permissão funcionou usando o CHMOD, e o problema do arquivo corrompido eu resolvi colocando um .htaccess no servidor (eu tinha esquecido :oops: )