【发布时间】:2018-03-05 20:54:15
【问题描述】:
我一直在尝试在 Android Studio 中使用 Kotlin 创建一个简单的路径,但不幸的是我无法这样做。 现在,我的代码如下所示:
lateinit var context : Context
private const val PERMISSION_REQUEST = 10
fun makeDir(){
// I/O logic
val filename: String = "ziemniakList.txt"
val myDir: String = Environment.getDataDirectory().toString() + "/Ziemniak/"
// create a File object for the parent directory
val sciezka = File(myDir)
// have the object build the directory structure, if needed.
sciezka.mkdirs()
// create a File object for the output file
//val outputFile = File(sciezka, filename)
//println("makeDir!")
Toast.makeText(context, myDir, Toast.LENGTH_LONG).show()
}
class NowaDostawa() : AppCompatActivity() {
private var permissions = arrayOf<String>(android.Manifest.permission.WRITE_EXTERNAL_STORAGE,android.Manifest.permission.READ_EXTERNAL_STORAGE)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_nowa_dostawa)
var MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1
context=this
val menuLista = arrayOf("Online", "Gotówka", "Karta")
val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, menuLista)
spinner.adapter = adapter
buttonNoweZamowienie.setOnClickListener{
if(inputAdres.text.toString() == "" || inputKwota.text.toString() == ""){
Toast.makeText(this, "All the fields needs to be filled!", Toast.LENGTH_LONG).show()
}
else{
var allSuccess = 1
for(i in permissions.indices){
if(checkCallingOrSelfPermission(permissions[i]) == PackageManager.PERMISSION_DENIED){
allSuccess = 0
}
}
if(allSuccess == 1){
Toast.makeText(context, "Permissions granted!", Toast.LENGTH_LONG).show()
makeDir()
finish()
}
else{
requestPermissions(permissions, PERMISSION_REQUEST)
}
}
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if(requestCode == PERMISSION_REQUEST){
var allSuccess = true
for(i in permissions.indices){
if(grantResults[i] == PackageManager.PERMISSION_DENIED){
allSuccess = false
var requestAgain = shouldShowRequestPermissionRationale(permissions[i])
if(requestAgain){
Toast.makeText(context, "Permissions hasn't been granted!", Toast.LENGTH_LONG).show()
}
else{
Toast.makeText(context, "Set permissions by yourself!", Toast.LENGTH_LONG).show()
}
}
}
if(allSuccess){
Toast.makeText(context, "Permissions has been granted!", Toast.LENGTH_LONG).show()
makeDir()
finish()
}
}
}
所以基本上,当我点击“buttonNoweZamowienie”按钮时,文件夹应该在 /data/Ziemniak/ 下创建,但它没有。如您所见,我授予了权限并且效果很好,但我仍然发现很难创建一些基本目录。可能是什么问题?如果有什么我没有具体说明的,欢迎追问
提前谢谢你
【问题讨论】:
-
我很好奇。你的
minSdkVersion是什么? -
@es0329 minSdkVersion 19