У меня есть приложение для веб-просмотра и вы хотите обновить приложение изнутри, когда в URL присутствует определенный текст.Приложение сбой при запуске деятельности
Я зову их в функции shouldOverrideUrlLoading из WebView:
Intent intent = new Intent(getApplicationContext(), Update.class);
startActivity(intent);
return true;
А вот Update.class
public class Update extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
String fileName = "app-file.apk";
destination += fileName;
final Uri uri = Uri.parse("file://" + destination);
File file = new File(destination);
if (file.exists())
file.delete();
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse(getIntent().getStringExtra("http://example.com/app-file.apk")));
request.setDestinationUri(uri);
dm.enqueue(request);
final String finalDestination = destination;
final BroadcastReceiver onComplete = new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Uri contentUri = FileProvider.getUriForFile(ctxt, BuildConfig.APPLICATION_ID + ".provider", new File(finalDestination));
Intent openFileIntent = new Intent(Intent.ACTION_VIEW);
openFileIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
openFileIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
openFileIntent.setData(contentUri);
startActivity(openFileIntent);
unregisterReceiver(this);
finish();
} else {
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
install.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(install);
unregisterReceiver(this);
finish();
}
}
};
registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
}
Когда я иду к определенному URL, чтобы начать свою деятельность, то приложение падает , Я хотел бы увидеть любое решение. Благодаря!!
Я РЕШЕН ЭТО, это была ошибка разрешения.
Любой отчет о сбое? – Aryan
Используйте 'adb logcat' для оценки трассировки стека. – Jameson
Мои деньги находятся на 'NullPointerException'. Это всегда * a 'NullPointerException', когда кто-то помещает проблему в метод' onCreate'. –