1

我正在使用MediaProjectionManager从应用程序录制视频,并授予保存音频和媒体存储的权限。

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
        Intent permissionIntent = mediaProjectionManager != null ? mediaProjectionManager.createScreenCaptureIntent() : null;
        startActivityForResult(permissionIntent, SCREEN_RECORD_REQUEST_CODE);
    }



@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    recorder.startScreenRecording(data, resultCode, this);
 }

}

我想保存此 Intent 数据以供功能使用,这意味着我想在应用程序关闭和重新打开时间后重用此 Intent 数据,我也授予所有运行时权限。有可能吗,那么请帮忙。

谢谢。

4

2 回答 2

0

您可以使用SharedPreferences在 Android 中保存变量。

储藏

SharedPreferences settings = getSharedPreferences(PREFERENCES, 0);
                SharedPreferences.Editor editor = settings.edit();
                String uriString = data.toUri(requestCode); 
                editor.putString("Contacts_app", uriString);
                editor.commit();

检索

SharedPreferences settings = getSharedPreferences(PREFERENCES, 0);
    String contactsApp = settings.getString("Contacts_app", null);
    try {
        telApp = Intent.parseUri(contactsApp, 0);
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

更多信息请看这里

于 2020-11-11T14:22:17.960 回答
0

如果您尝试了接受的答案但没有奏效,让我通知您,从这里的 android 文档中我们了解到

注意:Parcel 不是一种通用的序列化机制,您不应该将任何 Parcel 数据存储在磁盘上或通过网络发送。

考虑到Intent实现了 Parcelable ,难怪为什么这不起作用。我尝试使用 Gson 对意图进行序列化然后反序列化,但没有奏效,在这个问题上,我在评论中问过,你也可以看到

除了并非 Intent 中的所有内容都可以成功写入磁盘的问题之外,您捕获屏幕截图/截屏视频的权限仅在您的进程执行时才有效。将 Intent 写入磁盘不会改变这一点。”

于 2021-07-06T23:19:21.603 回答