我正在实现一个具有ConfigurationActivity的Widget,并且必须与Eclair(2.1)保持兼容.
有关AppWidgetProviders 方法的文档onUpdate明确指出:
....但是,如果您已声明配置Activity,则在用户添加App Widget时不会调用此方法,但会为后续更新调用此方法.配置Activity负责在配置完成时执行第一次更新.(请参阅下面的"创建应用程序小组件配置活动".)
不幸的是,这不是真的(至少对于带有JellyBean的Nexus S).事实上onUpdate,在 onCreate我的ConfigurationActivity触发器之前调用它.我想知道,如果在其他手机上有类似行为,并且是否可以阻止onUpdate我的提供商内部的通话?
我的解决方法是使用特定的AppWidgetId在我的WidgetConfigurationActivity中的SharedPreferences中存储一个标志.如果它不存在,我可以假设没有首先调用ConfigurationActivity.这有效,但在我的观点中真的很难看.如果我无法阻止onUpdate触发,是否有更好的解决方案?
我想AndroidTest为某个应用编写一个涉及写入外部存储的应用,但是以某种方式我无法使其正常工作。(在Pixel2,Lg G6,Huawai P8等多种设备上进行测试)
因此,我简化了所有操作,只是为了测试是否可以完全写入外部存储。我尝试了GrantPermissionRule并在Granter上进行了编写,但没有成功。
我可能最终做了太多不必要的事情,所以这是我所做的:
AndroidStudioAndroidManifest与uses-permission标签PermissionRequester 以下是上面编号列表引用的摘录
2。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.android.testpermissions">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="com.company.TestPermissions"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
3。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.android.testpermissions.test">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)
也尝试过
<manifest package="com.company.android.testpermissions">...
Run Code Online (Sandbox Code Playgroud)
省略“测试”后缀
4。
public class MyPermissionRequester {
public static final String TAG = MyPermissionRequester.class.getSimpleName();
public static void request(String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
UiAutomation auto = InstrumentationRegistry.getInstrumentation().getUiAutomation();
String cmd = …Run Code Online (Sandbox Code Playgroud) java testing android android-permissions android-external-storage
因为在python 3.X中,build-id range()函数不再返回一个列表而是一个可迭代的,一些旧的代码失败,因为我用它range()来方便地生成我需要的列表.
所以我尝试实现我自己的lrange功能:
def lrange(start = 0, stop, step = 1):
ret = []
while start < stop:
ret.append(start)
start += step
return ret
Run Code Online (Sandbox Code Playgroud)
给我一个"非默认参数遵循默认参数"解释器错误.
如果我看看Python的范围()似乎是可能的.
我发布这个问题主要是因为我想知道是否/如何自己实现具有这种签名的功能
今天我遇到一个让我真的很奇怪的功能.因此,我们假设这个简单的结构用于清除.
public class Animal{
public String getName(){ return null; }
}
public class Dog extends Animal{
@Override
public String getName(){
//I'm aware that not any Dog's name is 'Pluto', but its just a Sample ;)
return "Pluto"
}
}
public class Cat extends Animal{
protected final String mName;
public Cat(String name){
mName = name;
}
@Override
public String getName(){
//cats have different names, because the internet loves cats
return mName;
}
public void miao(){
//just a dummy
}
}
Run Code Online (Sandbox Code Playgroud)
现在将a指定 …
如果我有Preference-Activity或-Fragment我可以提供preference.xml文件来构建我的文件PreferenceScreen并通过显示addPreferenceFromResource(R.xml.preference)
然后可以通过以下方式检索更改的值 PreferenceManager.getDefaultSharedPreferences(Context)
我只是想知道是否可以将片段的默认首选项设置为默认值。
我希望有一个PreferenceFragment能够将其首选项(通过xml提供)存储在我可以通过context.getSharedPreferences("customPrefName", Context.MODE_PRIVATE)
但可以在xml中找到的东西(例如,可以通过xml提供)中
<PreferenceScreen android:prefName="customPrefName">...
Run Code Online (Sandbox Code Playgroud) 我想匹配任何循环周期的字符串.就像这个数据:
3333333333333333333333333333333333333333 / 1 digit cycle(3) 1666666666666666666666666666666666666666 / 1 digit cycle(6) 1428571428571428571428571428571428571428 / 6 digit cycle(142857) 1111111111111111111111111111111111111111 / 1 digit cycle(1) 0909090909090909090909090909090909090909 / 2 digit cycle(09) 0834522467546323545411673445234655345222 / no cycle 0769230769230769230769230769230769230769 / 6 digit cycle(769230) 0714285714285714285714285714285714285714 / 6 digit cycle(714285) 0666666666666666666666666666666666666666 / 1 digit cycle(6)
我尝试过的模式"([0-9]+?)\1+"在其他语言(如VB或文本编辑器)中运行良好.我已将这些字符串存储在名为的列表中values.所以这是我的代码:
import re
#stuff to get values
pattern = re.compile("([0-9]+?)\1+")
for value in values:
matchObj = pattern.search(value)
print(matchObj) #-> None
matchObj = pattern.findall(value)
print(matchObj) #-> []
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?任何提示都表示赞赏.
我想知道是否有可能在这样的资源数组中确定android资源类型(如drawable,raw):
public static final int[] resourcesArray = {
R.drawable.image1,
R.raw.image2,
R.drawable.image3
};
Run Code Online (Sandbox Code Playgroud) 我不明白.在java中,我允许将接口声明为方法的返回类型,如:
public List<String> get(){
return new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)
如果我现在有一个接口可以说I和C实现它的类,为什么我不允许这样定义:
public List<I> get(){
return new ArrayList<C>();
}
Run Code Online (Sandbox Code Playgroud)
我知道创建ArrayList<I>并添加C它的解决方案,但我想知道为什么我不允许像上面那样声明它.我认为每一个C都是一个I虽然应该没问题.
我总是认为在java中这样的表达式:
String tmp = "someString";
Run Code Online (Sandbox Code Playgroud)
只是某种"语法糖"
String tmp = new String("someString");
Run Code Online (Sandbox Code Playgroud)
正如我最近反编译我的java应用程序,我看到了所有的用法
public static final String SOME_IDENTIFIER = "SOME_VALUE";
Run Code Online (Sandbox Code Playgroud)
在代码中只用值替换,静态最终变量被剥离.
每次想要访问静态final时,都不会将这个新的String实例化吗?如何将其视为"编译器优化"?
java compiler-construction string instantiation compiler-optimization
什么是最简单(也是最优雅)的方法,以确定in运算符是否可以在python中使用?如果我打开一个python shell并输入:
"" in 2
Run Code Online (Sandbox Code Playgroud)
它打印:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'int' is not iterable
Run Code Online (Sandbox Code Playgroud)
根据python-docs,一个iterable是:
容器.iter()
返回一个迭代器对象.该对象需要支持下面描述的迭代器协议.如果容器支持不同类型的迭代,则可以提供其他方法来专门请求这些迭代类型的迭代器.(支持多种迭代形式的对象的示例是支持广度优先和深度优先遍历的树结构.)此方法对应于Python/C API中Python对象的类型结构的tp_iter槽.
所以
hasattr([], "__iter__") and hasattr({}, "__iter__")
Run Code Online (Sandbox Code Playgroud)
true按预期返回,但是
hasattr("test_string", "__iter__")
Run Code Online (Sandbox Code Playgroud)
返回false.但我可以使用
"test" in "test_string"
Run Code Online (Sandbox Code Playgroud)
没有任何问题.
优雅我指的是不使用try-except解决方案
android ×4
java ×4
python ×3
generics ×2
arguments ×1
casting ×1
containers ×1
drawable ×1
interface ×1
iterator ×1
preferences ×1
python-3.x ×1
regex ×1
return-value ×1
string ×1
testing ×1
weak-linking ×1