android– 更新我的App问题

android– 更新我的App问题,第1张

概述我正在开发一个非公开的Android应用,即该应用将无法在全球Android电子市场中使用.该应用程序将安装在有限数量的客户端上,例如通过使用apk文件.我在SD卡中有一个.apk,我正在尝试从我的应用程序更新我的应用程序.为此,我正在使用意图我的守则Intentintent=newIntent(Intent.A

我正在开发一个非公开的Android应用,即该应用将无法在全球AndroID电子市场中使用.该应用程序将安装在有限数量的客户端上,例如通过使用apk文件.我在SD卡中有一个.apk,我正在尝试从我的应用程序更新我的应用程序.为此,我正在使用意图

我的守则

Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromfile(new file(Environment.getExternalStorageDirectory().getPath()+"/" +"Test.apk")), "application/vnd.androID.package-archive");startActivity(intent);

注意:它工作正常,但更新后,应用程序将被关闭.

问题是“如何防止这种情况?”

我也使用广播接收器重新打开我的应用程序

public class @R_404_6843@Start extends broadcastReceiver{@OverrIDepublic voID onReceive(Context context, Intent intent) {     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){            Intent i = new Intent(context, ABCActivity.class);            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(i);    }else{         Intent i = new Intent(context, XYZActivity.class);         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         context.startActivity(i);    }}

问题
1: – 无法重新打开活动时

“androID.intent.action.PACKAGE_ADDED”

“androID.intent.action.PACKAGE_INSTALL”

“androID.intent.action.PACKAGE_CHANGED”

<receiver        androID:name=".@R_404_6843@Start"        androID:enabled="true"        androID:exported="true" >        <intent-filter androID:priority="100" >            <action androID:name="androID.intent.action.BOOT_COMPLETED" />        </intent-filter>        <intent-filter>            <action androID:name="androID.intent.action.PACKAGE_ADDED" />            <data androID:scheme="package" />        </intent-filter>        <intent-filter>            <action androID:name="androID.intent.action.PACKAGE_INSTALL" />            <data androID:scheme="package" />        </intent-filter>        <intent-filter>            <action androID:name="androID.intent.action.PACKAGE_CHANGED" />            <data androID:scheme="package" />        </intent-filter>        <intent-filter>            <action androID:name="androID.intent.action.PACKAGE_REPLACED" />            <data androID:scheme="package" />        </intent-filter>    </receiver>

“androID.intent.action.BOOT_COMPLETED”正常工作

权限给定

1 >     <uses-permission androID:name="androID.permission.RECEIVE_BOOT_COMPLETED" />2 >     <uses-permission androID:name="androID.permission.RESTART_PACKAGES" />3 >     <uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" />

解决方法:

遗憾的是,你不能阻止进程在重新安装时被终止,而另一方面 – 如果你自己的应用程序在那时重新安装,你将永远不会收到任何广播.

如果我必须实现这样的功能,我会解决这个问题:

技巧1:

只创建另一个应用程序(也会以某种方式安装在用户的设备上)它只会像“看门狗”一样:这个应用程序会听安装广播,因为它是不同的应用程序然后是那个安装 – 启动“原始应用程序”没有问题.

当然不要忘记用户将需要“启动”至少一个这个看门狗应用程序,因为从AndroID 4接收器将无法工作,直到应用程序进程至少开始.这是出于安全原因..

技巧2:

另一种选择是在清单中注册你的应用程序也是ACTION_TIME_TICK广播.你可以指望这个广播被调用每个秒数,并在它收到一些逻辑时实现,这些逻辑识别现在的应用程序是否需要启动主要活动.

这种方法会起作用,但是从表演的原因来看并不是那么好 – 因为你的应用程序流程几乎一直都会活着,因为它会对那个广播作出反应.如果你不在乎 – 所以这不是问题

技巧3:

在您开始安装活动之前的30-50秒之前,将pendingIntent提供给alarmManager.待处理的意图将有意重新启动您的应用程序.

假设应用程序将安装到那时 – 它会工作.

总结

以上是内存溢出为你收集整理的android – 更新我的App问题全部内容,希望文章能够帮你解决android – 更新我的App问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1116037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存