Android 6.0权限问题

时间:2016-05-04 21:43:07

标签: android android-studio permissions android-6.0-marshmallow

我在Android 6中遇到了这个新的权限请求。我的应用程序工作正常,然后在最近两天内它一直强制关闭。如果我将目标SDK级别更改为22,它可以正常工作,但Play Store当然不会让你降级SDK。

我需要这些权限。

<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"/>
<uses-permission android:name="com.android.vending.BILLING" />

在此之后,我不确定如何处理请求或新方法来实现权限部分,以便错误停止。我一直在研究这个问题几个小时,并且用Google搜索并无休止地搜索。虽然很多例子都告诉我要做同样的事情,但我似乎无法在Android Studio中编写它。任何帮助将不胜感激。

以下是给我提出问题的代码的一部分。

public void exportSkin(View arg0) throws IOException {


    if (type.equals("popular")) {
        AssetManager assetManager = getAssets();
        InputStream is = assetManager.open("skins/" + skinname + ".png");

        // create a File object for the parent directory
        File wallpaperDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath() + "/SkinYourself/");
        // have the object build the directory structure, if needed.
        //noinspection ResultOfMethodCallIgnored
        wallpaperDirectory.mkdirs();
        // create a File object for the output file


        File out = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/SkinYourself/", "" + PopChar.character_name + ".png");
        byte[] buffer = new byte[1024];
        FileOutputStream fos = new FileOutputStream(out);
        int read;

        while ((read = is.read(buffer, 0, 1024)) >= 0) {
            fos.write(buffer, 0, read);
        }

        fos.flush();
        fos.close();
        is.close();


    }
    if (type.equals("create")) {
        String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
        File myDir = new File(root + "/SkinYourself");
        myDir.mkdirs();


        String fname = "SkinYourself" + System.currentTimeMillis() / 1000 + ".png";
        File file = new File(myDir, fname);
        if (file.exists()) file.delete();
        try {
            FileOutputStream out = new FileOutputStream(file);
            b.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /*sendBroadcast(new Intent(
            Intent.ACTION_MEDIA_MOUNTED,
                    Uri.parse("file://" + Environment.getExternalStorageDirectory())));
    */
    Toast.makeText(MainActivity.this,
            "Your skin has been saved to the SkinYourself folder check the info button on how to use it", Toast.LENGTH_LONG)
            .show();

    displayInterstitial();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        File f = new File("file://" + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.sendBroadcast(mediaScanIntent);
    } else {
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES))));
    }
}

0 个答案:

没有答案