Android文件选择SAF

1、权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 安卓10,获取MediaProjection需要在一个前台服务中进行,不给权限则无法进行镜像 -->
<!-- 文件传输 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

2、打开

private void openSAF() {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT)
            .addCategory(Intent.CATEGORY_OPENABLE)
            .setType("*/*")
            .putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);
    if ( android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N){
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION |
                Intent.FLAG_GRANT_WRITE_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件
    }
    startActivityForResult(intent, RESULT_CODE);
}

3、返回读取文件

ContentResolver resolver = context.getContentResolver();
resolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
cursor = resolver.query(uri, null, null, null, null);

Scratch3.0编译

1、准备工作

/* 对版本要求较高,需升级 */
npm install -g npm /* npm升级到最新版本 */
npm install -g n /* nodejs升级 */
n stable /* 升级到最新的稳定版本 */

mkdir scratch /*便于管理,新建一个文件夹存放*/
cd scratch
git clone https://github.com/llk/scratch-gui /*scratch-gui下载*/
git clone https://github.com/llk/scratch-vm /*scratch-vm下载*/
git clone https://github.com/llk/scratch-blocks /*scratch-blocks下载*/

也可以直接从https://github.com/LLK这个地址内下载对应的文件.

2、配置scratch相关模块信息

cd scratch-vm
npm install
npm link
npm run watch

cd ../scratch-blocks
npm install
npm link

cd ../scratch-gui
npm install
npm link scratch-vm scratch-blocks
npm install
npm start

3、输入网址:http://localhost:8601/

4、异常问题:由于node版本升级的比较高,scratch-blocks的时候报了个异常.
处理方法: https://blog.csdn.net/Nikoye/article/details/128372310
环境变量配置好了之后需要更新一下,另外重启终端.

Android webview打开网址异常

某些网站在低版本Android设备上使用异常,处理方式:setAgentSetting属性,当作电脑网页打开。

wv_miniweb.getSettings().setUserAgentString(“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36”);

airplay问题

1、搜索不到设备:检查bonjour是否安装,bonjour服务是否开启,网络是否在同一网络下(有的路由器2.4G可以5G不行,需要看路由器配置参数)

参考链接:https://baijiahao.baidu.com/s?id=1662604391329132561&wfr=spider&for=pc

PageAdapter

@Override
public int getItemPosition(@NonNull @NotNull Object object) {
    return POSITION_NONE;
}//设置为NONE可以解决数据内容更新了,页面不刷新问题

@Override
public void destroyItem(@NonNull @NotNull ViewGroup container, int position, @NonNull @NotNull Object object) {
    container.removeView((View) object);
}//不加可能会造成pageview左右切换奔溃问题