SharedPreferences in Android are local to an Application, and not shared between different applications. When I say
SharedPreferences preferences = getSharedPreferences(PREF_NAME, MODE_WORLD_READABLE);
Run Code Online (Sandbox Code Playgroud)
What does it signify to make this preferences MODE_WORLD_READABLE, MODE_WORLD_WRITABLE or
MODE_PRIVATE?
我需要将我的应用程序本地化为印度尼西亚语.我的应用程序的资源文件夹包含每种语言的"值"子文件夹列表,例如"values-fr"文件夹.
但我阅读有关Android开发人员文档的令人困惑的信息.
请注意,Java使用了几个不推荐使用的双字母代码.希伯来语("他")语言代码被重写为"iw",印度尼西亚语("id")被改写为"in",而意第绪语("yi")被改写为"ji".即使您构造自己的Locale对象,也不仅仅是针对各种查找方法返回的实例,这种重写也会发生.
怎么理解这个?基本上,我应该将我的文件夹命名为"values-in"或"values-id",以便在具有印尼语区域设备的设备上正确显示印尼语文本?
我试图显示一个FragmentDialog(创建并显示为一个未添加为视图层次结构中的内容的对话框),其中有一个ViewPager,其内容由FragmentPagerAdapter给出(提供由图像组成的片段).
从FragmentActivity显示ViewPager + FragmentPagerAdapter时,代码非常完美,但从FragmentDialog执行此操作时会出现以下异常:
"IllegalArgumentException:找不到片段SimpleFragment的id 0x7f040077的视图......"
这是我的代码:
一个SherlockFragmentActivity,带有一个按钮,用于创建和显示对话框.
public class BorrameActivity extends SherlockFragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.one_act);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
showTheDialog();
}});
}
private void showTheDialog(){
AchGalleryDialog newFragment = AchGalleryDialog.newInstance(achs);
newFragment.show(getSupportFragmentManager(), "dialog");
}
Run Code Online (Sandbox Code Playgroud)
FragmentDialog:
public class AchGalleryDialog extends DialogFragment{
public AchGalleryDialog(){
}
public static AchGalleryDialog newInstance(){
AchGalleryDialog f = new AchGalleryDialog();
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter android-nested-fragment
Google地图应用程序具有透明的ActionBar,通过该ActionBar可以看到地图.

我可以使用以下方法设置ActionBar的透明度:
<style name="Theme.MyTheme" parent="android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">#64000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是如何在ActionBar后面显示我的ImageView?
我有一个视图,它做了一些基本的绘图.在此之后,我想绘制一个打孔的矩形,这样只能看到上一个图形的一个区域.我想为我的视图启用硬件加速以获得最佳性能.
目前我有两种方法可以工作,但只有在禁用硬件加速时才有效,而另一种方法太慢.
方法1:SW加速(慢)
final int saveCount = canvas.save();
// Clip out a circle.
circle.reset();
circle.addCircle(cx, cy, radius, Path.Direction.CW);
circle.close();
canvas.clipPath(circle, Region.Op.DIFFERENCE);
// Draw the rectangle color.
canvas.drawColor(backColor);
canvas.restoreToCount(saveCount);
Run Code Online (Sandbox Code Playgroud)
这不适用于为视图启用的硬件加速,因为在此模式下不支持'canvas.clipPath'(我知道我可以强制SW渲染,但我想避免这种情况).
方法2:硬件加速(V.慢速)
// Create a new canvas.
final Bitmap b = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
final Canvas c = new Canvas(b);
// Draw the rectangle colour.
c.drawColor(backColor);
// Erase a circle.
c.drawCircle(cx, cy, radius, eraser);
// Draw the bitmap on our views canvas.
canvas.drawBitmap(b, 0, 0, null);
Run Code Online (Sandbox Code Playgroud)
橡皮擦创建的地方
eraser = new Paint()
eraser.setColor(0xFFFFFFFF); …Run Code Online (Sandbox Code Playgroud) 我无法使用 VSCode for Flutter 进行调试。我正在使用 Windows 并且我正在尝试使用 Android 模拟器。
我尝试重新安装 Flutter、Android SDK 和 VSCode 来解决该问题,并尝试设置环境变量。
这是我在启动调试模式时遇到的错误。
Failed to launch emulator: Error: Emulator didn't connect within 60 seconds
有没有更好的模拟器可以同时用于 Android 和 IOS,因为我什至不知道从哪里开始使用 IOS 模拟器。我是应用程序开发的新手,想开始为这两种设备制作应用程序。
假设我正在开发一个聊天应用程序,它能够与其他人共享任何类型的文件(没有 mimetype 限制):比如图像、视频、文档,还有压缩文件,比如 zip、rar、apk 甚至不太常见的文件类型例如photoshop或autocad文件。
在 Android 9 或更低版本中,我直接将这些文件下载到下载目录,但在 Android 10 中,如果不向用户显示 Intent 以询问从何处下载它们,这是不可能的...
不可能的?但是为什么 Google Chrome 或其他浏览器能够做到这一点?事实上,他们仍然将文件下载到下载目录,而无需在 Android 10 中询问用户。
我首先分析了 Whatsapp 以了解他们如何实现它,但他们利用了 AndroidManifest 上的 requestLegacyExternalStorage 属性。但后来我分析了 Chrome,它的目标是 Android 10,而不使用 requestLegacyExternalStorage。这怎么可能?
几天来我一直在谷歌上搜索应用程序如何将文件直接下载到 Android 10 (Q) 上的下载目录,而无需询问用户将文件放在哪里,就像 Chrome 一样。
我已经阅读了 android 开发人员文档、关于 Stackoverflow 的很多问题、互联网上的博客文章和 Google Groups,但我仍然没有找到一种方法来保持与 Android 9 完全相同的方式,甚至没有一个让我满意的解决方案。
到目前为止我尝试过的:
使用 ACTION_CREATE_DOCUMENT 意图打开 SAF 以请求许可,但显然无法静默打开它。一个 Activity 总是被打开以询问用户将文件放在哪里。但是我应该在每个文件上打开这个 Intent 吗?我的应用程序可以在后台自动下载聊天文件。不是可行的解决方案。
在应用程序开头使用 SAF 获取授权访问权限,URI 指向下载内容的任何目录:
StorageManager sm = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
i = sm.getPrimaryStorageVolume().createOpenDocumentTreeIntent();
Run Code Online (Sandbox Code Playgroud)
请求用户许可是多么丑陋的活动,不是吗?即使这不是谷歌浏览器所做的。
或者再次使用 ACTION_CREATE_DOCUMENT,保存我在 onActivityResult() 中获得的 Uri 并使用 …
注意:我尝试了在 StackOverflow 上写的各种解决方案(这里的例子)。请不要在没有使用我在下面编写的测试中检查您发现的解决方案是否有效的情况下关闭它。
对应用程序有一个要求,即用户将提醒设置为在特定时间安排,因此当应用程序在这个时间被触发时,它会在后台做一些微小的事情(只是一些数据库查询操作),并显示一个简单的通知,讲述提醒。
过去,我用一个简单的代码来设置一些在相对特定的时间被调度的东西:
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val pendingIntent = PendingIntent.getBroadcast(context, requestId, Intent(context, AlarmReceiver::class.java), PendingIntent.FLAG_UPDATE_CURRENT)
when {
VERSION.SDK_INT >= VERSION_CODES.KITKAT -> alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeToTrigger, pendingIntent)
else -> alarmManager.set(AlarmManager.RTC_WAKEUP, timeToTrigger, pendingIntent)
}
Run Code Online (Sandbox Code Playgroud)
class AlarmReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Log.d("AppLog", "AlarmReceiver onReceive")
//do something in the real app
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
val timeToTrigger = System.currentTimeMillis() + java.util.concurrent.TimeUnit.MINUTES.toMillis(1)
setAlarm(this, timeToTrigger, 1)
Run Code Online (Sandbox Code Playgroud)
我现在已经在新 Android 版本和带有 Android 10 的 Pixel 4 上的模拟器上测试了此代码,它似乎没有触发,或者它可能在我提供它很长时间后触发。我深知的 …
我有 Android Emulator (API 28) logcat 被这样的消息淹没。
D/eglCodecCommon: setVertexArrayObject: set vao to 1 (1) 0 0
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 29 30
Run Code Online (Sandbox Code Playgroud)
那是什么,我应该担心吗?
android ×10
alarmmanager ×1
android-10.0 ×1
drawing ×1
emulation ×1
flutter ×1
graphics ×1
ios ×1
localization ×1
porter-duff ×1