Android InstantApp:前台服务

2024-03-04

无法在 InstantApp 功能模块内使用前台服务。低于运行时安全异常。

java.lang.RuntimeException:无法启动活动 组件信息{..XYZActivity}:java.lang.SecurityException:方法 类 android.app.ActivityManagerProxy.getServices 不可用 即时应用程序

Android 文档说,

受限功能:在用户不知情的情况下在设备上运行。前台服务可用。即时应用程序只能通过支持应用程序链接的活动启动,因此服务, 内容提供商或广播接收器将无法启动您的 应用程序。

Code:

// Starting service
getAppContext().startService(new Intent(getAppContext(), FirebaseAuthService.class));


// Foreground service class
public class FirebaseAuthService extends Service {

    private static final String TAG = "FirebaseAuthService";
    private boolean isRunning = false;

    private String mUserId;
    private FirebaseAuth mAuth;

    @Override
    public void onCreate() {
        Log.d(TAG, "Service onCreate");

        startForeground();
        isRunning = true;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i(TAG, "Service onStartCommand");

        new Thread(new Runnable() {
            @Override
            public void run() {
                myTask();
            }
        }).start();

        return Service.START_STICKY;
    }


    @Override
    public IBinder onBind(Intent arg0) {
        Log.i(TAG, "Service onBind");
        return null;
    }

    @Override
    public void onDestroy() {
        isRunning = false;
        Log.i(TAG, "Service onDestroy");
    }

    private void startForeground() {
        Intent notificationIntent = new Intent(this, HomeActivity.class);

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

        Notification notification = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.noti_logo)
                .setContentTitle("Title")
                .setContentText("Preparing...")
                .setContentIntent(pendingIntent).build();

        startForeground(1337, notification);
    }

    private void myTask() {
         // At end
        // Stop service once it finishes its task
        stopSelf();
    }
}

您的代码是正确的,但由于即时应用程序主管中的已知问题,前台服务目前无法运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android InstantApp:前台服务 的相关文章

随机推荐