标签: android-permissions

为什么我不能在 Android 6 上自定义权限请求对话框?

最近在新的Android Marshmallow上遇到了很多关于权限请求对话框的问题。它们听起来像:

如何自定义 Android 权限对话框?

如何为 Android 权限对话框提供自定义文本?

为什么我不能自定义Android权限对话框?

所以这里是所有这些问题的完整答案。

android android-permissions android-6.0-marshmallow

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

Android M - 权限设置重定向(INTENT ACTION)

有没有办法将用户重定向到应用程序的设置或更好地重定向到特定应用程序的权限?如下所示:

在此输入图像描述

在此输入图像描述

最好的祝福.

android android-intent android-permissions android-6.0-marshmallow

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

kotlin 的权限调度程序和多个@NeedsPermission

对于一个权限,我可以在 java 和 kotlin 中使用 permissionsdispatcher - 但是当涉及到这样的多个权限时:

@NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH})
Run Code Online (Sandbox Code Playgroud)

我在 kotlin 上遇到问题 - 它不接受多个参数 - 在 java 上工作正常

android kotlin android-permissions

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

权限拒绝:MediaDocumentsProvider

尝试显示 URI 时出现以下异常。我认为它发生在我的活动停止并且我再次尝试访问可行的 URI 之后。还有其他问题可以解决这个问题,但我很困惑如何将任何解决方案应用于我的代码,因为我的 takePhotoIntent 允许拍摄或从图库中选择图片(见下文)。

Unable to open content: content://com.android.providers.media.documents/document/image%3A49688
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaDocumentsProvider uri 
content://com.android.providers.media.documents/document/image%3A49688 from pid=821, uid=10238 requires android.permission.MANAGE_DOCUMENTS, or grantUriPermission()
Run Code Online (Sandbox Code Playgroud)

我的 createImageFile 和我的 takePhotoIntent:

private File createImageFile() throws IOException {
    // Create an image file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = "JPEG_" + timeStamp;
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(
            imageFileName,  /* prefix */
            ".jpg",         /* suffix */
            storageDir      /* directory */
    );

    // Save a file: path …
Run Code Online (Sandbox Code Playgroud)

java android android-permissions

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

无法在 Android(在 MarshMallow 及更高版本上)设备中创建目录

我正在尝试使用以下代码在我的 SD 卡上创建一个文件夹,但它失败了。这是我写的代码onCreate()

File test = new File(Environment.getExternalStorageDirectory(),"my_directory");
if(!test.exists())
{
    try 
    {
        if (test.mkdir()) 
        {
            Log.d("xxx", "directory created");
        } 
        else 
        {
             Log.d("xxx", "directory creation failed");
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
else
{
    Log.d("xxx","directory already present");
}
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时没有给出任何异常,它只是打印 directory creation failed日志。

我也给予了以下许可,

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

我用的是小米红米note 3,安卓版本是6.0.1。

android android-permissions android-6.0-marshmallow

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

java.io.FileNotFoundException :(允许拒绝)使用ObjectOutputStream编写对象时

我一直试图解决这个问题几个小时,我非常沮丧,所以我来找你们一些指导.

我试图保存并检索我创建的用户对象.我想这样做,以便我可以从我的应用程序中的任何意图保存和检索此User对象,所以我决定使用FileInput和Output流.我在下面列出了我的代码.

这是我的输出数据方法:

public static void serializeDataOut(User ish) {
    try {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath();
        File newFile = new File(path + "myFile.ser");
        FileOutputStream fos = new FileOutputStream(newFile);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(ish);
        oos.flush();
        oos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的输入数据方法:

public static User serializeDataIn(){
    try{
        String path = Environment.getExternalStorageDirectory().getAbsolutePath();
        FileInputStream fin = new FileInputStream(path + "myFile.ser");
        ObjectInputStream ois = new ObjectInputStream(fin);
        User iUser = (User) ois.readObject();
        ois.close();
        return iUser;
    } catch (IOException | ClassNotFoundException e) { …
Run Code Online (Sandbox Code Playgroud)

java android android-permissions

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

获取图库图像 Xamarin 的路径?

我正在尝试获取图库图像的路径。我正在获取存储在内部存储中而不是外部存储中的图像的路径。我还启用了已授予的读写存储和相机访问权限。这是我的代码

    void ChoosePhoto()
    {
        try
        {
            var imageIntent = new Intent();
            imageIntent.SetType("image/*");
            imageIntent.SetAction(Intent.ActionGetContent);
            StartActivityForResult(Intent.CreateChooser(imageIntent, "Select photo"), 0);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    } 

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);

        if (requestCode == CAMERA_CAPTURE)
        {
        // camera operation
        }
        else
        {
            Console.WriteLine("choose pic from Gallery");
            var uri = data.Data;
            var path = getRealPathFromURI(uri); //path returns null when i select image from external storage;
        }
    }
    private String getRealPathFromURI(Uri contentURI)
    {
        string[] …
Run Code Online (Sandbox Code Playgroud)

android android-gallery xamarin.android xamarin android-permissions

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

android.permission.INTERNET 自 API 28 以来是否再次需要?

在尝试将 admob 和 api 级别更新为 API 28 后,我收到了以下 Lint 警告:

Missing permissions required by MobileAds.initialize: android.permission.INTERNET
Run Code Online (Sandbox Code Playgroud)

调用这些函数时:

MobileAds.initialize(context, context.getString(R.string.app_id));
mInterstitialAd.loadAd(new AdRequest.Builder().build());
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

我记得android.permission.INTERNET很多年前就不需要了。应用程序无需使用该权限即可访问 Internet。即使在这个应用程序中,我也有一些 Internet 连接并且它们运行成功。我正在检索数据并且它正在工作,甚至还在显示广告。所有这些都未经清单上声明的许可。

为什么 Lint 会显示该警告?

android admob android-permissions android-9.0-pie

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

简单的发布请求在 android 9 中不起作用

我有一个在下面运行良好的应用程序Android9 phones。最近我开始测试我的应用程序android 9并面临一个奇怪的问题,即简单的 https/http 后调用不起作用,并且 library( com.loopj.android) 给出了一个无法连接的异常。我知道有一个与网络相关的变化,我尝试了我在互联网上找到的所有东西,但仍然没有运气。这是我的配置:

清单.xml:

  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

  <application
         tools:targetApi="28"
         android:networkSecurityConfig="@xml/network_security_config"
         android:usesCleartextTraffic="true">
  </application>
Run Code Online (Sandbox Code Playgroud)

res/xml 中的network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">my-backend.hostname.dk</domain>
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

我正在使用正确的密钥库签署应用程序: build.gradle:

signingConfigs {
        release {
            storeFile file("../myApp-release.keystore")
            storePassword "abcd1234"
            keyAlias "myApp-release"
            keyPassword "abcd1234"
        }
    }
Run Code Online (Sandbox Code Playgroud)

还尝试为 httpclient使用正确的SSLFactory

AsyncHttpClient client = new AsyncHttpClient();
    try {
            KeyStore trustStore …
Run Code Online (Sandbox Code Playgroud)

ssl android android-permissions android-security android-9.0-pie

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

调用相机应用程序(权限拒绝:启动 Intent)

我的片段正在尝试启动相机活动,但似乎存在一些相机权限问题,

在调试时,它只持续到代码行以下

startActivityForResult(callCameraApplicationIntent, CAMERA_PIC_REQUEST);

Run Code Online (Sandbox Code Playgroud)

下面是 logcat 结果

java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=android/com.android.internal.app.ResolverActivity clip={text/uri-list U:content://com.example.tc.provider/external_files/Pictures/photo_saving_app/IMAGE_20191205_070208.jpg} (has extras) } from ProcessRecord{8920903 18662:com.example.tc/u0a343} (pid=18662, uid=10343) with revoked permission android.permission.CAMERA
        at android.os.Parcel.readException(Parcel.java:2016)
        at android.os.Parcel.readException(Parcel.java:1962)
        at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:4452)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1617)
        at android.app.Activity.startActivityForResult(Activity.java:4551)
        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
Run Code Online (Sandbox Code Playgroud)

以下是似乎需要的代码部分。


        if (Build.VERSION.SDK_INT > 21) { //use this if Lollipop_Mr1 (API 22) or above
            Intent callCameraApplicationIntent = new Intent();
            callCameraApplicationIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);

            // We give some instruction to the intent to save the image
            File photoFile = null;

            try { …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-camera android-camera-intent android-permissions

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