• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Isolate a Service in Android application (AndroidStudio)

Parul

Lurker
May 16, 2016
5
1
Hi,

I am new to world of Android Development and experimenting on Isolation of services in Android. For the purpose, I created an application that play a music file on button press. Whenever i am trying to put isolation flag to true. The application flag crashes

android:isolatedProcess="true". My application crashes. Following is the code. Can anyone help any corrections.
Thanks in advance.

Code:
Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.o7planning.playsongservice">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".PlaySongService"
            android:enabled="true"
            android:isolatedProcess="true"
            android:exported="true"></service>
    </application>

</manifest>


Code:
MainActivity

package org.o7planning.playsongservice;

import android.app.Activity;
import android.content.Context;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.os.IBinder;
import android.widget.Toast;

import android.view.View;

public class MainActivity extends AppCompatActivity {
            PlaySongService localService;
        private boolean isBound = false;
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // This method is called when users click on the Start button.
    public void playSong(View view)  {
        // Create Intent object for PlaySongService.

        Intent myIntent = new Intent(MainActivity.this, PlaySongService.class);
        bindService(myIntent, connection, Context.BIND_AUTO_CREATE);

        // Call startService with Intent parameter.
        if (isBound) {
            this.startService(myIntent);
          //  myIntent.putExtra("pass","Activity is communicating with service");
        }

    }
    private ServiceConnection connection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName className, IBinder service) {
            PlaySongService.LocalBinder binder = (PlaySongService.LocalBinder) service;
            localService = binder.getService();
            isBound = true;
        }
        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            isBound = false;
        }
    };
}
    // This method is called when users click on the Stop button.
//   public void stopSong(View view)  {

       // Create Intent object
   //    Intent myIntent = new Intent(MainActivity.this, PlaySongService.class);
     //   this.stopService(myIntent);
   //}



//}


Code:
PlaySongService.java

package org.o7planning.playsongservice;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;

public class PlaySongService extends Service {
    private final IBinder binder = new LocalBinder();

    public class LocalBinder extends Binder {
        PlaySongService getService() {
            return PlaySongService.this;
        }
    }


    private MediaPlayer mediaPlayer;
    public PlaySongService() {
    }
    @Override
    public void onCreate(){
        super.onCreate();
        // Create MediaPlayer object, to play your song.
        mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.mysong);
    }
    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }
    public int onStartCommand(Intent intent, int flags, int startId){
        // Pass message from Activity.
        //Bundle extras = intent.getExtras();
       // String from =(String) extras.get("pass");
       // Toast.makeText(this, from, Toast.LENGTH_SHORT).show();
        // Play song.
        mediaPlayer.start();


        return START_STICKY;
    }

    // Destroy
    @Override
    public void onDestroy() {
        // Release the resources
        mediaPlayer.release();
        super.onDestroy();
    }
}
 
Code:
05-16 16:28:10.751 24207-24207/org.o7planning.playsongservice I/Process: Sending signal. PID: 24207 SIG: 9
05-16 16:28:24.897 24503-24503/org.o7planning.playsongservice W/System: ClassLoader referenced unknown path: /data/app/org.o7planning.playsongservice-1/lib/x86
05-16 16:28:25.153 24503-24503/org.o7planning.playsongservice W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
05-16 16:28:25.341 24503-24539/org.o7planning.playsongservice D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
                                                                               
                                                                                [ 05-16 16:28:25.343 24503:24503 D/         ]
                                                                                HostConnection::get() New Host Connection established 0xaa467b90, tid 24503
05-16 16:28:25.430 24503-24539/org.o7planning.playsongservice I/OpenGLRenderer: Initialized EGL, version 1.4
05-16 16:28:25.481 24503-24539/org.o7planning.playsongservice W/EGL_emulation: eglSurfaceAttrib not implemented
05-16 16:28:25.481 24503-24539/org.o7planning.playsongservice W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaa14a960, error=EGL_SUCCESS
05-16 16:28:27.213 24565-24565/org.o7planning.playsongservice:hello W/System: ClassLoader referenced unknown path: /data/app/org.o7planning.playsongservice-1/lib/x86
05-16 16:28:27.207 24565-24565/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:41): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-16 16:28:27.207 24565-24565/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:42): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-16 16:28:27.207 24565-24565/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:43): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-16 16:28:27.207 24565-24565/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:44): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-16 16:28:27.214 24565-24565/org.o7planning.playsongservice:hello W/ContextImpl: Unable to create files subdir /data/user/0/org.o7planning.playsongservice/cache
05-16 16:28:27.214 24565-24565/org.o7planning.playsongservice:hello D/AndroidRuntime: Shutting down VM
05-16 16:28:27.215 24565-24565/org.o7planning.playsongservice:hello E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                      Process: org.o7planning.playsongservice:hello, PID: 24565
                                                                                      java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getPath()' on a null object reference
                                                                                          at android.app.LoadedApk.makeApplication(LoadedApk.java:578)
                                                                                          at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)
                                                                                          at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getPath()' on a null object reference
                                                                                          at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:233)
                                                                                          at android.app.Application.attach(Application.java:187)
                                                                                          at android.app.Instrumentation.newApplication(Instrumentation.java:997)
                                                                                          at android.app.Instrumentation.newApplication(Instrumentation.java:981)
                                                                                          at android.app.LoadedApk.makeApplication(LoadedApk.java:573)
                                                                                          at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680) 
                                                                                          at android.app.ActivityThread.-wrap1(ActivityThread.java) 
                                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                          at android.os.Looper.loop(Looper.java:148) 
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
05-16 16:28:27.207 24565-24565/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:45): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-16 16:28:27.207 24565-24565/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:46): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-16 16:28:29.690 24565-24565/org.o7planning.playsongservice:hello I/Process: Sending signal. PID: 24565 SIG: 9
05-16 16:28:42.040 24632-24632/org.o7planning.playsongservice:hello I/Process: Sending signal. PID: 24632 SIG: 9
05-16 16:30:03.940 24503-24539/org.o7planning.playsongservice E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb40d6fa0
05-16 16:30:11.914 24503-24539/org.o7planning.playsongservice I/OpenGLRenderer: Initialized EGL, version 1.4
05-16 16:30:11.956 24503-24539/org.o7planning.playsongservice W/EGL_emulation: eglSurfaceAttrib not implemented
05-16 16:30:11.956 24503-24539/org.o7planning.playsongservice W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaa46f8c0, error=EGL_SUCCESS
05-16 16:34:44.001 24503-24539/org.o7planning.playsongservice E/Surface: getSlotFromBufferLocked: unknown buffer: 0xaa3f70e0
05-16 16:35:35.059 24503-24539/org.o7planning.playsongservice W/EGL_emulation: eglSurfaceAttrib not implemented
05-16 16:35:35.059 24503-24539/org.o7planning.playsongservice W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaa46f8c0, error=EGL_SUCCESS
05-16 16:35:36.075 24503-24539/org.o7planning.playsongservice E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb40d7010
05-16 16:35:56.782 24503-24539/org.o7planning.playsongservice I/OpenGLRenderer: Initialized EGL, version 1.4
05-16 16:35:56.820 24503-24539/org.o7planning.playsongservice W/EGL_emulation: eglSurfaceAttrib not implemented
05-16 16:35:56.821 24503-24539/org.o7planning.playsongservice W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaa46fe20, error=EGL_SUCCESS
05-16 16:35:57.803 24503-24539/org.o7planning.playsongservice E/Surface: getSlotFromBufferLocked: unknown buffer: 0xaa3f70e0
05-17 02:19:30.688 24503-24509/org.o7planning.playsongservice W/art: Suspending all threads took: 5.638ms
05-17 10:06:41.769 24503-24509/org.o7planning.playsongservice W/art: Suspending all threads took: 5.639ms
 
Upvote 0
This is the logcat when android exported is also set to true

Code:
05-17 13:17:04.770 12179-12179/org.o7planning.playsongservice:hello W/System: ClassLoader referenced unknown path: /data/app/org.o7planning.playsongservice-2/lib/x86
05-17 13:17:04.767 12179-12179/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:77): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-17 13:17:04.767 12179-12179/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:78): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-17 13:17:04.767 12179-12179/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:79): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-17 13:17:04.767 12179-12179/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:80): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-17 13:17:04.767 12179-12179/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:81): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-17 13:17:04.767 12179-12179/org.o7planning.playsongservice:hello W/ngservice:hello: type=1400 audit(0.0:82): avc: denied { search } for name="org.o7planning.playsongservice" dev="vdc" ino=22398 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-17 13:17:04.772 12179-12179/org.o7planning.playsongservice:hello W/ContextImpl: Unable to create files subdir /data/user/0/org.o7planning.playsongservice/cache
05-17 13:17:04.772 12179-12179/org.o7planning.playsongservice:hello D/AndroidRuntime: Shutting down VM
05-17 13:17:04.773 12179-12179/org.o7planning.playsongservice:hello E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                      Process: org.o7planning.playsongservice:hello, PID: 12179
                                                                                      java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getPath()' on a null object reference
                                                                                          at android.app.LoadedApk.makeApplication(LoadedApk.java:578)
                                                                                          at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680)
                                                                                          at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getPath()' on a null object reference
                                                                                          at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:233)
                                                                                          at android.app.Application.attach(Application.java:187)
                                                                                          at android.app.Instrumentation.newApplication(Instrumentation.java:997)
                                                                                          at android.app.Instrumentation.newApplication(Instrumentation.java:981)
                                                                                          at android.app.LoadedApk.makeApplication(LoadedApk.java:573)
                                                                                          at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4680) 
                                                                                          at android.app.ActivityThread.-wrap1(ActivityThread.java) 
                                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                          at android.os.Looper.loop(Looper.java:148) 
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                          at java.lang.reflect.Method.invoke(Native Method) 
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
05-17 13:17:06.953 12179-12179/org.o7planning.playsongservice:hello I/Process: Sending signal. PID: 12179 SIG: 9
05-17 13:17:12.954 12277-12277/org.o7planning.playsongservice:hello I/Process: Sending signal. PID: 12277 SIG: 9
05-17 13:18:50.234 15126-15126/org.o7planning.playsongservice W/System: ClassLoader referenced unknown path: /data/app/org.o7planning.playsongservice-1/lib/x86
05-17 13:18:50.712 15126-15126/org.o7planning.playsongservice W/System: ClassLoader referenced unknown path: /data/app/org.o7planning.playsongservice-1/lib/x86
05-17 13:18:50.847 15126-15126/org.o7planning.playsongservice W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
05-17 13:18:51.146 15126-15178/org.o7planning.playsongservice D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
                                                                               
                                                                                [ 05-17 13:18:51.149 15126:15126 D/         ]
                                                                                HostConnection::get() New Host Connection established 0xaa47dfd0, tid 15126
05-17 13:18:51.339 15126-15178/org.o7planning.playsongservice I/OpenGLRenderer: Initialized EGL, version 1.4
05-17 13:18:51.405 15126-15178/org.o7planning.playsongservice W/EGL_emulation: eglSurfaceAttrib not implemented
05-17 13:18:51.405 15126-15178/org.o7planning.playsongservice W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaa1508e0, error=EGL_SUCCESS
05-17 13:18:55.822 15248-15248/org.o7planning.playsongservice:hello I/Process: Sending signal. PID: 15248 SIG: 9
05-17 13:18:58.569 15348-15348/org.o7planning.playsongservice:hello I/Process: Sending signal. PID: 15348 SIG: 9
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones