标签: android-11

如何在 Android 11 或 Android Q 中保存视频文件

我想保存 Whatsapp 的状态。通过使用此代码,我可以保存图像

public void saveImage(Bitmap bitmap, String name) {
    OutputStream fileOutputStream;
    Uri imageUri;
    try {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            ContentResolver contentResolver = context.getApplicationContext().getContentResolver();
            ContentValues contentValues = new ContentValues();

            contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, "" + name);
            contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg");
            contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM + "/V Troid/WhatsApp");
            imageUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
            fileOutputStream = (FileOutputStream) contentResolver.openOutputStream(Objects.requireNonNull(imageUri));
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
            Objects.requireNonNull(fileOutputStream);
            Toast.makeText(context.getApplicationContext(), "Image Saved", Toast.LENGTH_SHORT).show();

        }
    } catch (Exception e) {
        Toast.makeText(context.getApplicationContext(), "Error \n" + e, Toast.LENGTH_SHORT).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在我也想保存视频文件,为此我正在使用此代码,但它对我不起作用,此代码损坏后我得到的文件

public void saveVideo(String name, Uri vidUri) {
        OutputStream …
Run Code Online (Sandbox Code Playgroud)

java android android-studio scoped-storage android-11

2
推荐指数
1
解决办法
1670
查看次数

如何更改 SdkVersion 30 上的系统UIVisibility

最近,Google 已弃用直接使用setSystemUIVisibilityView 类中的方法并向其传递标志来设置系统 UI 可见性。

已弃用的 setSystemUiVisibility 方法

我找不到它的源代码,因为它尚未公开发布。你们知道我如何在不使用这种方法的情况下实现全屏显示吗?

android android-fullscreen android-11

1
推荐指数
1
解决办法
8251
查看次数

在 android 11 中从 uri 创建文件 - getPath() 不起作用

我想在 android 11 的 ActivityResultCallback 中从 uri 创建一个文件。我用它uri.getPath()来将传入的 uri 转换为文件。但是,它在 android 11 中不起作用。这是我的代码:

       private void launchGallery (){
            Intent intent = new Intent(Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            launcherGallery.launch(intent);
        }
    
        ActivityResultLauncher<Intent> launcherGallery = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                result -> {
                    if (result.getResultCode() == RESULT_OK) {
                        Intent data = result.getData();
                        if (data != null) {
                            Uri imageUri = data.getData();
                            // ---> getPath() won't work in android 11 <---
                            File file = new File(imageUri.getPath());
                            // I don't want to display the image in an ImageView. 
                            // I …
Run Code Online (Sandbox Code Playgroud)

android uri file android-11 registerforactivityresult

1
推荐指数
1
解决办法
5393
查看次数

我的具有 PROCESS_TEXT 意图的应用程序不会出现在所有应用程序的复制粘贴菜单中

我正在尝试扩展复制/粘贴菜单以在我的应用程序中打开特定活动。

问题是,我的应用程序出现在某些应用程序中,而大多数应用程序中则没有。

AndroidManifest.xml:

<manifest ....>

 <queries>
        <intent>
            <action android:name="android.intent.action.PROCESS_TEXT" />
            <data android:mimeType="text/plain" />
        </intent>
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="text/plain" />
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:mimeType="text/plain"/>
        </intent>
    </queries>

<application ...>

<activity
            android:name=".component.popupActivity.PopUpActivity"
            android:exported="true"
            android:theme="@style/Theme.Transparent.SemiBlack">

            <intent-filter>
                <action android:name="android.intent.action.PROCESS_TEXT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http" />
                <data android:scheme="https" />
                <data android:mimeType="text/html"/>
                <data android:mimeType="text/plain"/>
                <data android:mimeType="application/xhtml+xml"/> …
Run Code Online (Sandbox Code Playgroud)

android popupmenu android-11

1
推荐指数
1
解决办法
711
查看次数

java.lang.IllegalArgumentException:所有请求的项目必须由特定 ID 引用(Android)

我在调用时收到此异常MediaStore.createWriteRequest(contentResolver, uris)。与 Anrdroid Q 及以上版本一样,我们必须使用 createWriteRequest 来写入存储。所以我正在尝试以下代码并得到异常。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            List<Uri> uris = new ArrayList<>();
            uris.add(mediaUri);
            MediaStore.createWriteRequest(contentResolver, uris);
            //code
        }
Run Code Online (Sandbox Code Playgroud)

storage android mediastore android-10.0 android-11

0
推荐指数
1
解决办法
5038
查看次数