【Android】Android10读写外置存储无效

如果targetSdkVersion为29,并且测试手机为Android 10,那么会发现,就算申请了存储权限,读写外置存储依旧是无效的。

这是因为Google 针对 Android 10,对存储权限进行了进一步的限制,每个App都有一块分区存储,可以进行读写访问,除此之外的路径,就访问不了了。

分区存储包含:

  • 特定于应用的目录中的文件(使用 getExternalFilesDir() 访问) (/storage/emulated/0/Android/data/包名)
  • 应用创建的照片、视频和音频片段(通过MediaStore访问)。

所以,对于Android 10无法读写外置存储的问题,有以下几种解决方案:

  • 将targetSdkVersion回退回28
  • 将文件存储到getExternalFilesDir() 目录下
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android Studio中实现NFC读写功能,需要以下几个步骤: 1. 确保你的设备支持NFC功能,并在AndroidManifest.xml文件中添加必要的权限和配置。例如,添加以下权限到<manifest>标签中: ```xml <uses-permission android:name="android.permission.NFC" /> ``` 并在<application>标签内添加以下配置: ```xml <uses-feature android:name="android.hardware.nfc" android:required="true" /> <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED" /> </intent-filter> ``` 2. 创建一个NFC Adapter实例,并启用前台调度模式以处理NFC意图。这可以在Activity或Service中完成。例如,在你的Activity的onCreate()方法中添加以下代码: ```java NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter != null && nfcAdapter.isEnabled()) { PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); IntentFilter[] intentFiltersArray = new IntentFilter[]{new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED)}; String[][] techListsArray = new String[][]{{android.nfc.tech.NfcA.class.getName()}}; nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray); } ``` 3. 处理NFC意图,读取或写入NFC标签的数据。在你的Activity中,重写onNewIntent()方法并添加以下代码: ```java @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); // 在这里执行读取或写入NFC标签的操作 } } ``` 你可以使用Tag对象来读取或写入NFC标签的数据。你可以使用技术类(例如Ndef或MifareClassic)来解析标签上的数据,并执行相应的操作。 这些是实现Android Studio中NFC读写功能的基本步骤。请根据你的需求和具体情况进行适当的调整和扩展。参考中的示例代码可以帮助你更详细地了解NFC读写功能的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值