Я разрабатываю не общедоступное приложение для Android, то есть приложение не будет доступно на глобальном Android Market. Приложение будет установлено на ограниченное число клиентов, например. используя файл apk. У меня есть .apk на SD-карте, и я пытаюсь обновить приложение из своего приложения. Для этого я использую Intentupdate My App Issue
Мой код
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);
ПРИМЕЧАНИЕ: Это работает нормально, но после его обновления, приложение будет закрыто.
Вопрос заключается в
Я также использовать Broadcast Receiver для Re-открыть мое приложение
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, если существует предыдущая версия приложения, она будет полностью остановлена * специально, чтобы ее можно было обновить *. Я не пробовал это сам, но, возможно, [это] (http://stackoverflow.com/questions/15572154/auto-restart-app-after-market-update) может помочь вам перезагрузить приложение. –
Я Пытаюсь Это также .. http://stackoverflow.com/questions/15572154/auto-restart-app-after-market-update –
То же самое, о чем я говорил в своем комментарии. –