【发布时间】:2014-09-03 20:26:41
【问题描述】:
我正在开发一个非公开的 Android 应用程序,即该应用程序不会在全球 Android 市场上提供。该应用程序将安装在有限数量的客户端上,例如通过使用 apk 文件。我在 SD 卡中有一个 .apk,我正在尝试从我的应用程序更新我的应用程序。为此,我正在使用 Intent
我的代码
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 AutoStart extends BroadcastReceiver{
@Override
public 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=".AutoStart"
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" />
【问题讨论】:
-
无论何时安装一个 apk,如果该应用程序的先前版本存在,它将完全停止特别是它可以升级。我自己没有尝试过,但也许this 可以帮助您重新启动您的应用。
-
我也在尝试这个.. stackoverflow.com/questions/15572154/…
-
这与我在评论中链接到的问题完全相同。
-
是的,但它不起作用....还有其他建议吗? @A--C
标签: android android-intent broadcastreceiver