2017-06-28 3 views
0

で画像を保存する方法インスタントアプリで画像を保存する方法がインスタントアプリ

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="***"> 
<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission 
    android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 
<application android:allowBackup="true" 
    android:label="@string/app_name" 
    android:icon="@mipmap/ic_launcher" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"/> 

EasyPermissions.requestPermissions(this, "11", REQUEST_STORAGE_PERMISSION, Manifest.permission.WRITE_EXTERNAL_STORAGE); 

java.io.FileNotFoundException:/ストレージ/エミュレート/ 0 /アンドロイド/データ/ ***/files/pic.jpg(許可が拒否されました)

答えて

0

許可を得るためにこのコードをカメラのアクティベーションに適用してください

takephoto.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (hasTakePermissions(getApplicationContext(), PERMISSIONS)) { 
       takePicture(); 
      } else { 
       ActivityCompat.requestPermissions(HomeActivity.this, PERMISSIONS, PERMISSION_ALL); 
      } 
     } 
    }); 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case REQUEST_WRITE_PERMISSION: 
      if (hasPermissions(getApplicationContext(), PERMISSIONS)) { 
       takePicture(); 
      } else { 
       ActivityCompat.requestPermissions(HomeActivity.this, PERMISSIONS, PERMISSION_ALL); 
      } 
    } 
} 
    public static boolean hasTakePermissions(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; 
} 
+0

カメラ権限が付与されており、カメラをプレビューすることができますが、テイク画像はその場合の – xixihaha

+0

それを保存することができないとき、あなたは私が唯一WRITE_EXTERNAL_STORAGEの許可を要求する際にパス形式 –

+0

を保存した画像を確認する必要があります、ダイアログを表示することはできません。インスタントアプリケーションがストレージを使用することはできません。インスタントアプリで – xixihaha

2

あなたはInstant Appsで直接ストレージにアクセスできません。 これらは、より高いレベルのセキュリティSandBoxで実行されます。 あなたがアクセス権を持っている唯一の権限は次のとおりです。

BILLING 
ACCESS_COARSE_LOCATION 
ACCESS_FINE_LOCATION 
ACCESS_NETWORK_STATE 
CAMERA 
INSTANT_APP_FOREGROUND_SERVICE only in Android O. 
INTERNET 
READ_PHONE_NUMBERS only in Android O. 
RECORD_AUDIO 
VIBRATE 

は他の権限は、あなたのアプリのインストールバージョンが必要になります。

つまり、パブリックストレージの読み書きはできません。 ただし、コンタクトピッカーやフォトピッカーなど、インスタントアプリに公開されているパブリックコンテンツプロバイダにアクセスできます。

源:公式よくある質問here

+0

コンテンツプロバイダの代替案は有効なアプローチではないかもしれないことに注意してください。 「制限された機能」および「サポートされていない機能」、https://developer.android.com/topic/instant-apps/prepare.html#additional-reqsによると、コンテンツプロバイダはサポートされていません。 –

関連する問題