【发布时间】:2018-05-19 04:17:04
【问题描述】:
我需要通过 APK 下载提供应用更新。将签名的 APK 下载到设备、打开并安装更新后,某些应用功能被破坏。
例如,它显示错误的警报。
这里调用showDefaultAlert 而不是showWifiAlert
mNetworkTester = new Runnable() {
@Override
public void run() {
NetworkInfo networkInfo = getActiveNetworkInfo();
if (networkInfo != null) {
networkType = networkInfo.getType();
}
if (!isNetworkAvailable(networkInfo)) {
if (!mShowingDefaultAlert) {
if (networkType == ConnectivityManager.TYPE_WIFI) {
showWifiAlert(null, null);
} else {
showDefaultAlert(null, null);
}
AppCardServer.reset();
mShowingDefaultAlert = true;
}
} else if (mShowingDefaultAlert) {
if (internetTest != null && internetTest.getStatus().equals(AsyncTask.Status.PENDING)) {
internetTest.execute();
} else {
internetTest = new InternetTestTask(new OnSocketListener() {
@Override
public void onConnect(boolean connected) {
if (connected) {
mShowingDefaultAlert = false;
showDialog(null);
initConfiguration();
}
}
});
}
}
handler.postDelayed(mNetworkTester, INTERVAL);
}
};
handler.post(mNetworkTester);
如果我使用 adb install -r 安装相同的 APK,或者从 Android Studio 运行它,一切正常。为什么会发生这种情况以及如何解决?
这是我的 AndroidManifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.appcard.androidterminal">
<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" />
<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>
</manifest>
【问题讨论】:
-
尝试将 android studio 中的“即时运行”设置为 false,如果为 true。发生在我身上一次。
-
检查你的清单文件一些权限问题
-
请编辑您的问题并提供minimal reproducible example 并详细解释确切“某些应用程序功能损坏”的含义。例如,如果您正在崩溃,请提供完整的 Java 堆栈跟踪以及该堆栈跟踪中引用的代码。
-
@CommonsWare 我没有崩溃,只是得到了错误的观点。使用 adb 安装相同的 apk 解决此问题。添加了我的代码和清单以进行解释
-
@Rohit5k2 apk 是用 Jenkins 制作的