标签: android-6.0-marshmallow

使用DataBinding库绑定事件

我正在尝试使用Android M附带的DataBinding Library将事件与xml中的视图绑定.我正在关注Android开发人员的示例并逐步实现.对于视图的属性,如可见性,文本工作正常,但如果我尝试与onclick绑定,它不会按预期工作.这是我到目前为止尝试过的示例代码:

 <data>
    <import type="android.view.View"/>
    <variable name="user" type="com.example.databinding.User"/>
    <variable name="handlers" type="com.example.databinding.MyHandlers"/>
</data>

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.firstName}"
    android:visibility="@{user.isFriend ? View.VISIBLE : View.GONE}" />
 <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click Me"
    android:id="@+id/button"
    android:layout_gravity="left"
    android:onClick="@{handlers.onClickFriend}"/>
Run Code Online (Sandbox Code Playgroud)

主要活动 :

  public class MainActivity extends AppCompatActivity {

  User user;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityMainBinding binding = 
    DataBindingUtil.setContentView(this,R.layout.activity_main);
    user = new User("Pankaj","Kumar",true,true);
    binding.setUser(user);
   }
 }
Run Code Online (Sandbox Code Playgroud)

MyHandlers:

public class MyHandlers {
public void onClickFriend(View view){
    Log.i(MyHandlers.class.getSimpleName(),"Now Friend");
}

public void onClickEnemy(View …
Run Code Online (Sandbox Code Playgroud)

data-binding android android-databinding android-6.0-marshmallow

44
推荐指数
3
解决办法
4万
查看次数

Android M奇怪的共享偏好问题

在运行Android M Developer Preview 2的Nexus 5上,当卸载/重新安装应用程序时,设备正在检索我很久以前存储的共享首选项,例如布尔值isFirstLaunch.

清除这些的唯一方法是从设备设置手动执行.

Android M上的共享首选项行为是否有任何变化?我找不到任何关于此的文件.

或许Android M Preview 2 ROM有一个bug ...

android sharedpreferences android-6.0-marshmallow

42
推荐指数
3
解决办法
1万
查看次数

您可以在Android Marshmallow(API 23)的运行时权限模型中同步请求权限吗?

假设您有这样的方法:

public boolean saveFile (Url url, String content) {

   // save the file, this can be done a lot of different ways, but
   // basically the point is...

   return save_was_successful;
}
Run Code Online (Sandbox Code Playgroud)

在整个应用程序中,如果要将文件保存到外部存储,则执行以下操作:

if (saveFile(external_storage_url, "this is a test")) {
   // yay, success!
} else { // notify the user something was wrong or handle the error }
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子,所以不要对我的情况大概阻塞UI,妥善处理异常,等等.如果你不喜欢的文件保存得到的,你能想象一个getContact()getPhoneState()或什么的.重点是它是一个需要许可的操作,它返回一些值并在整个应用程序中使用它.

在Android <= Lollipop中,如果用户已经安装并同意授予android.permission.WRITE_EXTERNAL_STORAGE或其他什么,那么一切都会好的.

但是在新的Marshmallow(API 23)运行时权限模型中,在将文件保存到外部存储之前,您应该(1)检查是否已授予权限. 如果没有,可能(2)显示请求的理由(如果系统认为这是一个好主意)与吐司或其他什么,以及(3)要求用户通过对话授予权限,然后基本上坐下来等待打回来...

(所以你的应用程序坐在那里,等待...)

(4)当用户最终响应对话框时,onRequestPermissionsResult() …

android android-permissions android-6.0-marshmallow

42
推荐指数
2
解决办法
2万
查看次数

如何将Android M默认USB配置设置为MTP而不是"仅充电"?

每当我的设备(Nexus 5,Android M Preview 3)通过USB连接时,USB配置始终默认为"仅充电".

这是非常有问题的,因为我的设备上的USB端口有故障,有时在碰撞时会断开连接并重新连接,因此我每次都必须手动将模式从通知抽屉更改为MTP(媒体传输协议).

  • 调试模式已启用
  • 开发设置 - > USB配置设置为MTP.

android mtp nexus-5 android-6.0-marshmallow

41
推荐指数
3
解决办法
5万
查看次数

崩溃将AndroidKeyStoreRSAPrivateKey转换为RSAPrivateKey

我正在学习本教程:如何使用Android Keystore存储密码和其他敏感信息.它(松散地)与Google Sample应用程序绑定:BasicAndroidKeyStore.

我可以使用公钥加密我的数据,我可以在运行Lollipop的设备上解密.但是我有一个运行棉花糖的Nexus 6,这个崩溃给出了错误:

java.lang.RuntimeException: Unable to create application com.android.test: java.lang.ClassCastException: android.security.keystore.AndroidKeyStoreRSAPrivateKey cannot be cast to java.security.interfaces.RSAPrivateKey
Run Code Online (Sandbox Code Playgroud)

这是它崩溃的代码:

KeyStore.Entry entry;

//Get Android KeyStore
ks = KeyStore.getInstance(KeystoreHelper.KEYSTORE_PROVIDER_ANDROID_KEYSTORE);

// Weird artifact of Java API.  If you don't have an InputStream to load, you still need to call "load", or it'll crash.
ks.load(null);

// Load the key pair from the Android Key Store
entry = ks.getEntry(mAlias, null);

KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) entry;

//ERROR OCCURS HERE::
RSAPrivateKey …
Run Code Online (Sandbox Code Playgroud)

java android cryptography java-security android-6.0-marshmallow

41
推荐指数
3
解决办法
9910
查看次数

转到我的应用程序的应用程序权限屏幕

是否有意图转到Android-M中我的应用程序的"应用程序权限"屏幕?

我正在为Android-M准备我的应用程序并使用新的权限模型.我已按照链接中提到的所有步骤进行操作

https://developer.android.com/training/permissions/requesting.html

一切都已设置好并且一切都很好接受如果用户已经选中"永不再问"按钮并拒绝许可,则在下次启动时我想让用户选择转到应用程序的"应用程序权限"并自行更改权限,如果他改变了主意.我希望通过提供一个按钮,让用户直接进入我的应用程序的"应用程序权限"屏幕,让非技术娴熟的用户更容易一些.有办法吗?(这将是比给喜欢的用户指令好得多Menu→交通Settings→交通Applications→交通Manage Applications→交通选择应用程序)

谢谢你的帮助!

permissions android android-6.0-marshmallow

40
推荐指数
1
解决办法
2万
查看次数

如何在运行时检查授权权限?

Android M(预览)中,用户可以选择特定应用并检索特定权限.

所以我问如何在运行时检查授权权限

android android-permissions android-6.0-marshmallow

39
推荐指数
4
解决办法
8万
查看次数

更新后允许按钮不起作用

在已安装Android Marshmallow最新更新的设备上 - 即2016年6月更新,当我要求权限时,ALLOW按钮不起作用.

我用这两个设备进行了测试:

Nexus 6p(Andoid版本 - 6.0.1,内部版本号 - MTC19V)

Nexus 7(Android版本6.0.1,内部版本号 - MOB30M)

两者都有最新的更新,当我请求权限时,会显示对话框,但我无法按下ALLOW按钮.

这是我用来请求权限的代码:

public void showPermissionsDialog() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int hasWriteExternalStoragePermission = activity.checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
        int hasWriteGetAccountsPermission = activity.checkSelfPermission(android.Manifest.permission.GET_ACCOUNTS);

        if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED || hasWriteGetAccountsPermission != PackageManager.PERMISSION_GRANTED) {
            activity.requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.GET_ACCOUNTS}, MainActivity.REQUEST_CODE_ASK_PERMISSIONS);
        } else {
            isAllPermissionsGranted = true;
        }
    } else {
        isAllPermissionsGranted = true;
    }

}



    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == REQUEST_CODE_ASK_PERMISSIONS) {
            if …
Run Code Online (Sandbox Code Playgroud)

permissions android android-6.0-marshmallow

39
推荐指数
1
解决办法
2万
查看次数

从onRequestPermissionsResult()中调用DialogFragment的show()会在Marshmallow中导致IllegalStateException

脚步:

  1. Fragment或请求许可Activity
  2. 从内部显示DialogFragment onRequestPermissionsResult()
  3. java.lang.IllegalStateException 抛出:之后无法执行此操作 onSaveInstanceState

当我在延迟一段时间后显示对话框时(使用postDelayed),这不会发生.据http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html)上,我们可以蜂窝后设备commit()之间onPause()onStop()没有任何国家损失或异常.这是一个示例项目源,日志文件和记录问题的链接. https://drive.google.com/folderview?id=0BwvvuYbQTUl6STVSZF9TX2VUeHM&usp=sharing

此外,我已经打开了一个问题https://code.google.com/p/android/issues/detail?id=190966,但它被标记为WorkingAsIntended,他们建议只捕获异常.但这并没有解决问题.我知道解决它的其他方法,但这不是这个安卓漏洞吗?

更新 错误状态再次"分配".希望很快就能解决.我的临时解决方案是

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        // do your fragment transaction here
    }
}, 200);
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-dialogfragment android-permissions android-6.0-marshmallow

38
推荐指数
3
解决办法
6280
查看次数

Android:要为代码值选择什么?

像这样的方法ActivityCompat.requestPermissions要求我传递一个请求代码,以后我可以在回调中测试它(在这种情况下onRequestPermissionsResult).我应该在请求代码中传递一些最佳实践价值吗?我注意到如果我只输入一个随机的,int我有时会得到这样的错误:

java.lang.IllegalArgumentException: Can only use lower 8 bits for requestCode



10-25 16:47:43.652 8315-8315/? E/AndroidRuntime: FATAL EXCEPTION: main
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime: Process: my package, PID: 8315
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{mypackage.myactivity}: java.lang.IllegalArgumentException: Can only use lower 8 bits for requestCode
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread.-wrap11(ActivityThread.java)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at …
Run Code Online (Sandbox Code Playgroud)

java user-interface android android-permissions android-6.0-marshmallow

38
推荐指数
1
解决办法
2万
查看次数