Delphi 10.3.3, автозапуск приложения Android при загрузке (Android 8.x, 10.x)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Delphi 10.3.3, автозапуск приложения Android при загрузке (Android 8.x, 10.x)

Сообщение Anonymous »

Я создал Java-файл следующего содержания:

Код: Выделить всё

package com.embarcadero.XLRBoot;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.Context;

public class startup extends BroadcastReceiver
{

@Override
public void onReceive(Context context, Intent intent)
{
Intent sintent = new Intent();
sintent.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity");
sintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(sintent);
}

}
Я создал из этого JAR-файл следующим образом:

Код: Выделить всё

C:\Program Files (x86)\Java\jdk1.7.0_71\bin>jar cf com-embarcadero-XLRBoot.jar "d:\Delphi XE 10\XLR Spider\Boot Receiver\com-embarcadero-XLRBoot.java"
Мой AndroidManifest.template выглядит так: Я установил следующие разрешения в Delphi:
[x] Получение завершения загрузки
[x] Изменение порядка задач
I скомпилируйте мое приложение, запустите его, остановите, перезагрузите устройство. Я получаю сообщение об ошибке, что оно остановлено.
В журналах я вижу следующую запись:

Код: Выделить всё

04-20 12:38:49.087  2769  2769 E AndroidRuntime: FATAL EXCEPTION: main
04-20 12:38:49.087  2769  2769 E AndroidRuntime: Process: com.embarcadero.XLRBoot, PID: 2769
04-20 12:38:49.087  2769  2769 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate receiver com.embarcadero.XLRBoot: java.lang.ClassNotFoundException: Didn't find class "com.embarcadero.XLRBoot" on path: DexPathList[[zip file "/data/app/com.embarcadero.XLRBoot-OHpYv4loPMPls2q6DuLOLA==/base.apk"],nativeLibraryDirectories=[/data/app/com.embarcadero.XLRBoot-OHpYv4loPMPls2q6DuLOLA==/lib/arm, /data/app/com.embarcadero.XLRBoot-OHpYv4loPMPls2q6DuLOLA==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib, /system/vendor/lib/hw]]
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at android.app.ActivityThread.handleReceiver(ActivityThread.java:3174)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at android.app.ActivityThread.-wrap17(Unknown Source:0)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1675)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:106)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:164)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:6518)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
04-20 12:38:49.087  2769  2769 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.embarcadero.XLRBoot" on path: DexPathList[[zip file "/data/app/com.embarcadero.XLRBoot-OHpYv4loPMPls2q6DuLOLA==/base.apk"],nativeLibraryDirectories=[/data/app/com.embarcadero.XLRBoot-OHpYv4loPMPls2q6DuLOLA==/lib/arm, /data/app/com.embarcadero.XLRBoot-OHpYv4loPMPls2q6DuLOLA==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib, /system/vendor/lib/hw]]
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    at android.app.ActivityThread.handleReceiver(ActivityThread.java:3169)
04-20 12:38:49.087  2769  2769 E AndroidRuntime:    ... 8 more
Я, очевидно, что-то пропустил, но что?
Спасибо за помощь.
С уважением
Роберт
ОБНОВЛЕНИЕ 4
Я удалил предыдущие обновления, потому что был немного не в себе. Вот как мне кажется, что мне нужно правильно создавать файлы.
Создать файл класса

Код: Выделить всё

javac -Xlint:all -classpath "c:\Users\Public\Documents\Embarcadero\Studio\20.0\PlatformSDKs\android-sdk-windows\platforms\android-26\android.jar" "d:\Delphi XE 10\XLR Spider\Boot Receiver\0.2\startup\com\embarcadero\XLRBoot\startup.java" -d "d:\Delphi XE 10\XLR Spider\Boot Receiver\0.2\startup"
Создать файл JAR:

Код: Выделить всё

jar cf "d:\Delphi XE 10\XLR Spider\Boot Receiver\0.2\startup\com\embarcadero\XLRBoot\startup.jar" -C "d:\Delphi XE 10\XLR Spider\Boot Receiver\0.2\startup\com\embarcadero\XLRBoot" startup.class
Delphi выдает ошибку EXEC(1) Exec.

Подробнее здесь: https://stackoverflow.com/questions/671 ... d-8-x-10-x
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»