我的应用:Android 10屏幕录像机不再工作

问题描述

自Android 10起,我无法保存所谓的启动画面活动中的视频输出
基本上,您可以定义文本,速度,大小和颜色。

未选中视频复选框时,一切正常。在Android 10上,仅在屏幕上简单地显示文本行就不成问题。一旦激活了视频并授予了权限,通过按下屏幕录像机对话框中的接受按钮,视频就会崩溃。

minSDK:16
maxsdk:30

我收到前台服务的消息,但不知道如何实现。有人可以帮助我,告诉我正确的职位以及我必须更改的内容吗?

我目前的错误

onActivityResult:387,Splashscreen (stutz.com.flash_text)
dispatchActivityResult:8110,Activity (android.app)
deliverResults:4838,ActivityThread (android.app)
handleSendResult:4886,ActivityThread (android.app)
execute:51,ActivityResultItem (android.app.servertransaction)
executeCallbacks:135,TransactionExecutor (android.app.servertransaction)
execute:95,TransactionExecutor (android.app.servertransaction)
handleMessage:2016,ActivityThread$H (android.app)
dispatchMessage:107,Handler (android.os)
loop:214,Looper (android.os)
main:7356,ActivityThread (android.app)
invoke:-1,Method (java.lang.reflect)
run:492,RuntimeInit$MethodAndArgsCaller (com.android.internal.os)
main:930,ZygoteInit (com.android.internal.os)

我的相关代码如下:

清单:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
    
    <activity android:name=".Splashscreen"
    android:theme="@style/NoTheme"
    android:screenorientation="sensorLandscape"/>
        <service
            android:name=".Splashscreen"
            android:enabled="true"
            android:foregroundServiceType="mediaProjection"
            android:exported="true"/>

Permission.java:


import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.core.app.ActivityCompat;

public class Function {

    public static  boolean hasPermissions(Context context,String... permissions) {
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
            for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context,permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }
            }
        }
        return true;
    }
}
定义值后

MainActivity调用

    private void openSplash() {
        Intent splash = new Intent(this,Splashscreen.class);
        splash.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(splash);
    }

splashscreen.java:

来自mainactivity的

值在splashscreen.java中启动:

import static stutz.com.flash_text.MainActivity.bgcolor;
import static stutz.com.flash_text.MainActivity.textcontent1;
import static stutz.com.flash_text.MainActivity.textcontent2;
import static stutz.com.flash_text.MainActivity.textcontent3;
import static stutz.com.flash_text.MainActivity.speed;
import static stutz.com.flash_text.MainActivity.color;
import static stutz.com.flash_text.MainActivity.loop;
import static stutz.com.flash_text.MainActivity.video;
import static stutz.com.flash_text.MainActivity.quality;
import static stutz.com.flash_text.MainActivity.textsizefloat;

public class Splashscreen extends AppCompatActivity {

    private static final String TAG = "Splashscreen";
    private static final int REQUEST_CODE = 1000;
    private static final int REQUEST_PERMISSION_KEY = 1;
    private int mScreenDensity;
    private mediaprojectionmanager mProjectionManager;
    private static int disPLAY_WIDTH;
    private static int disPLAY_HEIGHT;
    private MediaProjection mMediaProjection;
    private Virtualdisplay mVirtualdisplay;
    private MediaProjectionCallback mMediaProjectionCallback;
    private MediaRecorder mMediaRecorder;
    private static final SparseIntArray ORIENTATIONS = new SparseIntArray();
    private boolean isRecording = false;
    public static boolean sharefilecheck;
    public static Uri shareuri;
    
    
        // Permission Array

    private final String[] PERMISSIONS = {
            Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE
    };

    // Rotation Array

    static {
        ORIENTATIONS.append(Surface.ROTATION_0,90);
        ORIENTATIONS.append(Surface.ROTATION_90,0);
        ORIENTATIONS.append(Surface.ROTATION_180,270);
        ORIENTATIONS.append(Surface.ROTATION_270,180);
    }
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splashscreen);

        // Set fullscreen and screen always on

        getwindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        getwindow().getDecorView().setsystemUIVisibility(View.SYstem_UI_FLAG_FULLSCREEN);
        getwindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getwindow().getDecorView().setBackgroundColor(Color.parseColor(bgcolor));
        
        
                if (video && Build.VERSION.SDK_INT >= 21 && Function.hasPermissions(this,PERMISSIONS) && !novalues) {

            displayMetrics metrics = new displayMetrics();
            getwindowManager().getDefaultdisplay().getMetrics(metrics);
            mScreenDensity = metrics.densityDpi;

            mMediaRecorder = new MediaRecorder();

            mProjectionManager = (mediaprojectionmanager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);

            display display = getwindowManager().getDefaultdisplay();
            Point size = new Point();
            display.getSize(size);
            disPLAY_WIDTH = size.x;
            disPLAY_HEIGHT = size.y;

            // Override values otherwise video Could crash

            loop = false;

            if (speed < 500) {
                speed = 500;
            }

            // Start video recording

            onToggleScreenShare();

        }
        
        
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void onToggleScreenShare() {

        if (!isRecording) {
            initRecorder();
            shareScreen();
        } else {
            mMediaRecorder.stop();
            mMediaRecorder.reset();
            stopscreensharing();
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void shareScreen() {
        if (mMediaProjection == null) {
            startActivityForResult(mProjectionManager.createScreenCaptureIntent(),REQUEST_CODE);
        }
    }
    
     @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void stopscreensharing() {
        if (mVirtualdisplay == null) {
            return;
        }
        mVirtualdisplay.release();
        destroyMediaProjection();
        isRecording = false;
        Log.i(TAG,"Video saved");
        Toast.makeText(this,"Video saved on int/ext Storage",Toast.LENGTH_SHORT).show();
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void destroyMediaProjection() {
        if (mMediaProjection != null) {
            mMediaProjection.unregisterCallback(mMediaProjectionCallback);
            mMediaProjection.stop();
            mMediaProjection = null;
        }
        Log.i(TAG,"MediaProjection Stopped");
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void onBackpressed() {
        if (isRecording) {
            mMediaRecorder.stop();
            mMediaRecorder.reset();
            Log.v(TAG,"Stopping Recording");
            stopscreensharing();
            Toast.makeText(this,"Recording stopped",Toast.LENGTH_SHORT).show();
        }
        finish();
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void onDestroy() {
        super.onDestroy();
        destroyMediaProjection();
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private Virtualdisplay createVirtualdisplay() {
        return mMediaProjection.createVirtualdisplay("Splashscreen",disPLAY_WIDTH,disPLAY_HEIGHT,mScreenDensity,displayManager.VIRTUAL_disPLAY_FLAG_AUTO_MIRROR,mMediaRecorder.getSurface(),null,null);
    }

    // Manifest Permission Check - Function Call

    @Override
    public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {

        switch (requestCode) {
            case REQUEST_PERMISSION_KEY: {
                if ((grantResults.length > 0) && (grantResults[0] + grantResults[1]) == PackageManager.PERMISSION_DENIED) {
                    isRecording = false;
                    Snackbar.make(findViewById(android.R.id.content),"Please enable Storage permissions.",Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    Intent intentP = new Intent();
                                    intentP.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                                    intentP.addCategory(Intent.CATEGORY_DEFAULT);
                                    intentP.setData(Uri.parse("package:" + getPackageName()));
                                    intentP.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                    intentP.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME);
                                    intentP.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                                    intentP.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                                    startActivity(intentP);

                                }

                            }

                    ).show();


                }

            }

        }


    }

// display Permission Window

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data) {

        super.onActivityResult(requestCode,resultCode,data);
        if (requestCode != REQUEST_CODE) {
            Log.e(TAG,"UnkNown request code: " + requestCode);
            Toast.makeText(this,"Please accept to make a video",Toast.LENGTH_SHORT).show();
            isRecording = false;
            finish();
        }
        if (resultCode != RESULT_OK) {
            Log.e(TAG,"Canceled");
            Toast.makeText(this,"Canceled. You have to accept to make a video",Toast.LENGTH_SHORT).show();
            isRecording = false;
            finish();
        }
        if (resultCode == RESULT_OK) {
           mMediaProjectionCallback = new MediaProjectionCallback();
           mMediaProjection = mProjectionManager.getMediaProjection(resultCode,data);
           mMediaProjection.registerCallback(mMediaProjectionCallback,null);
           mVirtualdisplay = createVirtualdisplay();
           mMediaRecorder.start();
           isRecording = true;
        }
    }


    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private class MediaProjectionCallback extends MediaProjection.Callback {
        @Override
        public void onStop() {
            if (isRecording) {
                isRecording = false;
                mMediaRecorder.stop();
                mMediaRecorder.reset();
            }
            mMediaProjection = null;
            stopscreensharing();
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void initRecorder() {
        try {
            mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
            mMediaRecorder.setoutputFormat(MediaRecorder.OutputFormat.MPEG_4); //THREE_GPP
            mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
            mMediaRecorder.setVideoSize(disPLAY_WIDTH,disPLAY_HEIGHT);
            mMediaRecorder.setVideoFrameRate(30);
            Calendar c = Calendar.getInstance();
            String sDate = c.get(Calendar.YEAR) + "_"
                    + c.get(Calendar.MONTH)
                    + "_" + c.get(Calendar.DAY_OF_MONTH)
                    + "-" + c.get(Calendar.HOUR_OF_DAY)
                    + "-" + c.get(Calendar.MINUTE)
                    + "-" + c.get(Calendar.SECOND);
            String savestring = getExternalFilesDir(null) + "/Flash_Text_" + sDate + ".mp4";
            shareuri = Uri.parse(savestring);
            mMediaRecorder.setoutputFile(savestring);
            mMediaRecorder.setVideoEncodingBitRate(quality);
            sharefilecheck = true;
            int rotation = getwindowManager().getDefaultdisplay().getRotation();
            int orientation = ORIENTATIONS.get(rotation + 90);
            mMediaRecorder.setorientationHint(orientation);
            mMediaRecorder.prepare();
        } catch (IOException e) {
            e.printstacktrace();
        }
    }
}
}

编辑: 扩展的崩溃日志:

11-06 20:10:46.908 22718 22718 E AndroidRuntime: FATAL EXCEPTION: main
11-06 20:10:46.908 22718 22718 E AndroidRuntime: Process: stutz.com.flash_text,PID: 22718
11-06 20:10:46.908 22718 22718 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,request=1000,result=-1,da
ta=Intent { (has extras) }} to activity {stutz.com.flash_text/stutz.com.flash_text.Splashscreen}: java.lang.SecurityException: Media projections requir
e a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:4845)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:
135)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:107)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:214)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7356)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
11-06 20:10:46.908 22718 22718 E AndroidRuntime: Caused by: java.lang.SecurityException: Media projections require a foreground service of type Service
Info.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.os.Parcel.createException(Parcel.java:2071)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:2039)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:1987)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.media.projection.MediaProjection.<init>(MediaProjection.java:58)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.media.projection.mediaprojectionmanager.getMediaProjection(mediaprojectionmanager.ja
va:104)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at stutz.com.flash_text.Splashscreen.onActivityResult(Splashscreen.java:387)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.Activity.dispatchActivityResult(Activity.java:8110)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:4838)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        ... 11 more
11-06 20:10:46.908 22718 22718 E AndroidRuntime: Caused by: android.os.remoteexception: Remote stack trace:
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at com.android.server.media.projection.mediaprojectionmanagerService$MediaProjection.start(Medi
aProjectionManagerService.java:476)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:135)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.os.Binder.execTransactInternal(Binder.java:1021)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:        at android.os.Binder.execTransact(Binder.java:994)
11-06 20:10:46.908 22718 22718 E AndroidRuntime:
11-06 20:18:34.779 23616 23616 E AndroidRuntime: FATAL EXCEPTION: main
11-06 20:18:34.779 23616 23616 E AndroidRuntime: Process: stutz.com.flash_text,PID: 23616
11-06 20:18:34.779 23616 23616 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,da
ta=Intent { (has extras) }} to activity {stutz.com.flash_text/stutz.com.flash_text.Splashscreen}: java.lang.SecurityException: Media projections requir
e a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:4845)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:
135)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:107)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:214)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7356)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
11-06 20:18:34.779 23616 23616 E AndroidRuntime: Caused by: java.lang.SecurityException: Media projections require a foreground service of type Service
Info.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.os.Parcel.createException(Parcel.java:2071)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:2039)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:1987)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.media.projection.MediaProjection.<init>(MediaProjection.java:58)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.media.projection.mediaprojectionmanager.getMediaProjection(mediaprojectionmanager.ja
va:104)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at stutz.com.flash_text.Splashscreen.onActivityResult(Splashscreen.java:387)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.Activity.dispatchActivityResult(Activity.java:8110)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:4838)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        ... 11 more
11-06 20:18:34.779 23616 23616 E AndroidRuntime: Caused by: android.os.remoteexception: Remote stack trace:
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at com.android.server.media.projection.mediaprojectionmanagerService$MediaProjection.start(Medi
aProjectionManagerService.java:476)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:135)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.os.Binder.execTransactInternal(Binder.java:1021)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:        at android.os.Binder.execTransact(Binder.java:994)
11-06 20:18:34.779 23616 23616 E AndroidRuntime:
11-06 20:19:31.578 24212 24212 E AndroidRuntime: FATAL EXCEPTION: main
11-06 20:19:31.578 24212 24212 E AndroidRuntime: Process: stutz.com.flash_text,PID: 24212
11-06 20:19:31.578 24212 24212 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,da
ta=Intent { (has extras) }} to activity {stutz.com.flash_text/stutz.com.flash_text.Splashscreen}: java.lang.SecurityException: Media projections requir
e a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:4845)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:
135)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:107)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:214)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7356)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
11-06 20:19:31.578 24212 24212 E AndroidRuntime: Caused by: java.lang.SecurityException: Media projections require a foreground service of type Service
Info.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.os.Parcel.createException(Parcel.java:2071)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:2039)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:1987)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.media.projection.MediaProjection.<init>(MediaProjection.java:58)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.media.projection.mediaprojectionmanager.getMediaProjection(mediaprojectionmanager.ja
va:104)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at stutz.com.flash_text.Splashscreen.onActivityResult(Splashscreen.java:387)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.Activity.dispatchActivityResult(Activity.java:8110)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:4838)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        ... 11 more
11-06 20:19:31.578 24212 24212 E AndroidRuntime: Caused by: android.os.remoteexception: Remote stack trace:
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at com.android.server.media.projection.mediaprojectionmanagerService$MediaProjection.start(Medi
aProjectionManagerService.java:476)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:135)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.os.Binder.execTransactInternal(Binder.java:1021)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:        at android.os.Binder.execTransact(Binder.java:994)
11-06 20:19:31.578 24212 24212 E AndroidRuntime:
11-09 17:33:04.746  6534  6534 E AndroidRuntime: FATAL EXCEPTION: main
11-09 17:33:04.746  6534  6534 E AndroidRuntime: Process: stutz.com.flash_text,PID: 6534
11-09 17:33:04.746  6534  6534 E AndroidRuntime: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,da
ta=Intent { (has extras) }} to activity {stutz.com.flash_text/stutz.com.flash_text.Splashscreen}: java.lang.SecurityException: Media projections requir
e a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.ActivityThread.deliverResults(ActivityThread.java:4845)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:
135)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:107)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:214)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7356)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
11-09 17:33:04.746  6534  6534 E AndroidRuntime: Caused by: java.lang.SecurityException: Media projections require a foreground service of type Service
Info.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.os.Parcel.createException(Parcel.java:2071)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:2039)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.os.Parcel.readException(Parcel.java:1987)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:231)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.media.projection.MediaProjection.<init>(MediaProjection.java:58)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.media.projection.mediaprojectionmanager.getMediaProjection(mediaprojectionmanager.ja
va:104)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at stutz.com.flash_text.Splashscreen.onActivityResult(Splashscreen.java:387)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at 
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at android.app.Activity.dispatchActivityResult(Activity.java:8110)
11-09 17:33:04.746  6534  6534 E AndroidRuntime:        at 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)