介绍 在研究别人的项目期间,突然发现了此方案,特意分享,原来flutter自己已经有一套成熟的国际化生成功能,配置完成后,只需要编写arb即可,主要有以下步骤 新建一个l10n.yaml文件 添加和配置所需文件...template-arb-file: 默认使用的arb文件 output-localization-file: 导出的文件名 nullable-getter: 获取国际化文本是否可空 2....,先不用管) import 'package:flutter/widgets.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart...'; export 'package:flutter_gen/gen_l10n/app_localizations.dart'; extension AppLocalizationsX on BuildContext...需要使用的地方: arb的内容还有很多,例如,添加参数等,自行可研究,以上完!
---- 2. flutter_gen 工具的安装 首先 flutter_gen 并非是一个三方插件,而是一个命令行工具。...注意这里的 flutter_gen 文件夹和上面的 flutter_gen 工具是两个不同的东西,只是名字一样。flutter_gen 工具不是官方出品的,而且只是对资源进行管理。...然后为 MaterialApp 组件指定本地化代理: import 'package:flutter_gen/gen_l10n/app_localizations.dart'; MaterialApp...import 'package:flutter/widgets.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';...export 'package:flutter_gen/gen_l10n/app_localizations.dart'; extension AppLocalizationsX on BuildContext
我们在处理跨国业务、跨地区(比如港澳台)业务的时候,需要针对当地的语言来做兼容。所以,我们必须处理 app 的多语言。...项目初始化 为了演示多语言的功能,我们新建一个项目: flutter create jimmy_lang 更改下代码: // lib/main.dart import 'package:flutter...并使用现在生成的英文本地化 helloWolrd: // lib/main.dart import 'package:flutter/material.dart'; import 'package:flutter_gen.../gen_l10n/app_localizations.dart'; // 引入对应的本地化类 void main() { runApp(const MyApp()); } class MyApp.../dart_tool/flutter_gen/gen_l10n 中多出一份配置 app_localizations_zh.dart 文件 。
版本,ios版本正在解决账号问题 效果如下: 架构更新 之前技术采用flutter做的前端,后端api则对接的是抖音官方api,由于抖音的官方api更新频繁,导致经常播放不了,所以索性自己来写服务器后端...home_buttom_discover":"发现", "home_buttom_notification":"通知", "home_buttom_persion":"我" } 在main文件引用: import 'package...:flutter_gen/gen_l10n/app_localizations.dart'; 在build里加入多语言检测及支持的代码: return MaterialApp( debugShowCheckedModeBanner..., ); }, ); 然后在需要引用的位置加入: import 'package:flutter_gen/gen_l10n/app_localizations.dart'; 调用的位置...,独立出来,各位感兴趣的可以关注项目的进展。
apkfile.exists()) { Toast.makeText(mContext, "下载的安装包不存在", Toast.LENGTH_SHORT).show(); return...apkfile.exists()) { Toast.makeText(mContext, "下载的安装包不存在", Toast.LENGTH_SHORT).show(); return...:authorities值 Uri apkUri = FileProvider.getUriForFile(mContext, "你的包名.provider", apkfile...Intent(Intent.ACTION_VIEW); install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //添加这一句表示对目标应用临时授权该...Uri所代表的文件 install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); install.setDataAndType
但此方式要求的条件多,如下: 知道 App 的包名和 Activity 的全路径及其名称 需要启动的目标 Activity 在 AndroidManifest.xml 中的属性 Export=“true...” 那这种方式下,如何判断目标 Activity 是否存在呢?...Activity 是否存在,如果此 Activity 不存在,会报 java.lang.IllegalArgumentException: Unknown component 异常,并导致程序崩溃。...,就不一一列举了,需要时直接搜索相关代码即可,我们用打开一个网页为例: Uri uri = Uri.parse("http://www.abc.xyz"); Intent intent = new Intent...(Intent.ACTION_VIEW, uri); startActivity(intent); 这时,直接使用 Intent.resolveActivity() 方法没什么问题: Uri uri =
但此方式要求的条件多,如下: 知道 App 的包名和 Activity 的全路径及其名称 需要启动的目标 Activity 在 AndroidManifest.xml 中的属性 Export="true..." 那这种方式下,如何判断目标 Activity 是否存在呢?...Activity 是否存在,如果此 Activity 不存在,会报 java.lang.IllegalArgumentException: Unknown component 异常,并导致程序崩溃。...uri = Uri.parse("http://www.abc.xyz"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity...(intent); 这时,直接使用 Intent.resolveActivity() 方法没什么问题: Uri uri = Uri.parse("http://www.abc.xyz"); Intent
确保参数 Uri 是一个 content Uri 。否则,则检测不通过。 4. 通过 Uri 得到目标 ContentProvider ,如果不存在,则检测不通过。 5....检查 API 为某个 package 添加访问 content Uri 的读或者写权限。...(Uri uri, int modeFlags) 检查某个 pid 和 uid 的 package 是否拥有 uri 的读写权限,返回值表示是否被 granted 。...) 检查某个 pid 和 uid 的 package 是否拥有 uri 的读写权限,如果失败则抛出异常,打印消息 。...如果 MANIFEST.MF 不存在,则需要创建。
): 判断请求URI对应的映射 ① 不存在: 再判断是否配置了mvc:default-servlet-handler: 如果没配置,则控制台报映射查找不到,客户端展示404错误 如果有配置,则执行目标资源...(一般为静态资源,如:JS,CSS,HTML) ② 存在: 执行下面流程 根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler...-- 设置扫描组件的包 --> ,,发送一个不存在资源的请求路径,mappedHandler为null http:/...配置mvc:default-servlet-handler/,mvc:annotation-driven/,发送一个不存在资源的请求路径 http://localhost:8080/SpringMVC
以 Android 11 (API 级别 30) 或更高版本为目标的应用默认将只能获取 过滤后的已安装应用列表。...try { val intent = Intent(ACTION_VIEW, Uri.parse(url)).apply { addCategory(CATEGORY_BROWSABLE...ActivityNotFoundException) { Snackbar.make(it,"Activity Not Found",Snackbar.LENGTH_LONG).show() } 尽管您可以启动没有目标可见性的任何...如果此类结果不存在,将抛出 ActivityNotFoundException,然后,您的应用可以在自定义标签页中打开该网址。...您也可以启用软件包过滤的日志消息,了解默认可见性对您的应用有何影响: $ adb shell pm log-visibility --enable YOUR_PACKAGE_NAME 后续步骤 有关软件包可见性的详细信息
启动方式使用 Uri 启动,本文使用尽可能简单,并且能拿来直接用的代码。...打开 B 应用程序清单 Package.appxmanifest ,在“声明”选卡项中添加一个新的“协议”声明(如果你做过后台任务的话那一定很熟悉)。...在“名称”(name)那一栏中填写你需要注册的 Uri (随便编)。填写完成后保存,这样就完成了 Uri 的注册。 ? ...和 MSDN 的“推荐设置”方法不同,这里采用的是先判断 B 应用在设备上存不存在,如果存在直接启动,不存在启动商店搜索。下面直接给出代码,注意把 Uri 换成相应的 Uri 即可。...Uri 内的 ProductID 是一定要写的,不然会报错。
强制更新,下载了最新的包之后打开报错: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.content.res.XmlResourceParser...既然authority不存在,肯定是配置有问题。 <!...,也统一用自己项目包下的BuildConfig.APPLICATION_ID 代替。...", apkFile); intent.setDataAndType(contentUri, "application/vnd.android.package-archive")...); } else { intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive
File file2 = new File("E:\\桌面文件\\JAVA\\src"); File file3 = new File(file2, "demo.txt"); File(URI uri)...通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。...文件不存在返回false 2....[] listFiles([FilenameFilter filter]) 类似于上面 流总览 流对象代表任何有能力产出数据的源对象或任何有能力消费数据的目标对象,Java中IO类分为输入和输出两部分...,如Interest连接等 每种数据源都对应一个具体的InputStream的子类 OutputStream 他的子类决定了输出要去往的目标,包括: 字节数组 管道 文件 Reader 和 Writer
---- 声明:该方案只对API19及以上版本有效 一、目标需求 最近项目中在完善推送功能,需要进入APP时检测一下是否开启了推送权限,如果没有开启弹窗提醒,当用户点击弹窗时直接跳转到APP的通知设置界面...uri = Uri.fromParts("package", getPackageName(), null); // intent.setData(uri...uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri);...", packageName) //val uri = Uri.fromParts("package", packageName, null)...是不存在的,比如:锤子坚果3——OC105 API25。
目标组件一般要通过Intent来声明自己的条件,一般通过组件中的元素来过滤。...新的应用程序apk包安装完毕 ACTION_PACKAGE_CHANGED 现有应用程序apk包改变 ACTION_PACKAGE_REMOVED 现有应用程序apk包被删除...字符串常量 描述 CATEGORY_BROWSABLE 目标Activity能通过在网页浏览器中点击链接而激活(比如,点击浏览器中的图片链接) CATEGORY_GADGET 表示目标...Activity CATEGORY_LAUNCHER 表示目标Activity是应用程序中最优先被执行的Activity CATEGORY_PREFERENCE 表示目标Activity...uri); startActivity(it); 12.install apk Uri installUri = Uri.fromParts("package", "xxx"
之前有小伙伴向我请教一道笔试题:要求写出一个WEB应用服务,不得使用Servlet接口,用Socket实现,可以响应get请求,打印请求信息,并判断请求资源,若不存在,返回404信息,若资源存在,返回该资源...,并且可以返回默认的静态页面。...思路 主线程启动Socket服务,循环接收客户端请求,接收到请求后,将流中的数据取出拼接成字符串,在控制台打印。...响应时判断请求资源是否存在,若存在,将资源通过输出流响应给客户端,若资源不存在,将404错误信息通过输出流响应给客户端,同时指定一个静态页面作为默认返回。...); } } return null; } public String getUri() { return uri
child):根据一个目录和一个子文件/目录得到File对象 3.File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象 4.File(URI...uri):根据路径的uri创建File对象 代码示例如下: package com.joshua317; import org.junit.Test; import java.io.File; import...uri=new URI("file:///E:/java/test4.txt"); file = new File(uri); file.createNewFile...//当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。...public boolean createNewFile() 返回:会自动检查文件是否存在,如果不存在则创建文件。
", new File(apkPath)); //添加这一句表示对目标应用临时授权该Uri所代表的文件 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION...); intent.setDataAndType(apkUri, "application/vnd.android.package-archive");...(new File(apkPath)), "application/vnd.android.package-archive"); } activity.startActivity...(new File(apkUrl)), "applicationnd.android.package-archive"); } else {//Android7.0...", new File(apkUrl)); //添加这一句表示对目标应用临时授权该Uri所代表的文件 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
领取专属 10元无门槛券
手把手带您无忧上云