更新屏幕意外关闭

时间:2018-06-05 13:00:07

标签: android android-intent android-install-apk

我在Android 5.1,SDK 22上以编程方式更新了我的应用。

这是我的清单

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<application
    android:name=".AppContext"
    android:allowBackup="false"
    android:icon="@drawable/logo_small"
    android:label="@string/app_name"
    android:supportsRtl="false"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">

    <activity
        android:name=".ui.MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:name=".KioskService" android:exported="false"/>

    <service
        android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"
        android:enabled="true" />

    <service android:name="org.eclipse.paho.android.service.MqttService" />

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/paths"/>
    </provider>

    <receiver android:name=".BootReceiver">
        <intent-filter >
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

    <receiver
        android:name=".content.UpdateAlarmReceiver"
        android:exported="false" >
    </receiver>

</application>

以下是我如何启动更新

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

它为我带来了系统更新对话框。在按下安装时,它开始更新,进度条开始移动,但随后对话框会像完成的活动一样自动关闭,返回到Android桌面。

当我尝试点击应用图标时,它会返回我&#34; App未安装&#34;。在我假设的后台完成更新过程几秒钟后,app可以打开并按预期工作。

如何防止这种意外关闭更新对话框?我想向用户显示进度。

1 个答案:

答案 0 :(得分:0)

标志更改解决了它

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);