不知道是否有人可以帮助考虑Android M是否会浮出水面而不是那么多.我的应用程序遇到了一些奇怪的行为.我使用本地posix像tcp客户端套接字来建立一些连接.这些插座运行良好,直到"打盹"或"应用待机"模式不激活...因为一旦他们做了手机重置不能让我的应用再次工作.唯一的解决方案是清除应用程序数据或重新安装手机上的应用程序.我还没有调查哪个是后续连接的错误,那些在打盹模式之后,肯定听起来很奇怪,为了修复posix tcp连接再次工作,需要重新安装完整的应用程序.明天我将能够发布关于这个问题的更多细节.打瞌睡之后有没有人在Android M上遇到类似的问题阻止了网络访问?谢谢!
目前我有以下方法来检查AppCompatActivityMarshmallow的运行时权限:
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
boolean hasPermission = checkSelfPermission(Manifest.permission.XX)
== PackageManager.PERMISSION_GRANTED;
if(!hasPermission) {
if(shouldShowRequestPermissionRationale(Manifest.permission.XX)) {
// explain reason for permission, try again
} else {
// user deny with "don't show again"
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现它对棉花糖的效果相当好.但是,我应该担心前M版本中的权限,我应该使用ContextCompat.checkSelfPermission()吗?我知道使用Xposed或类似的框架可以修改pre-M中的权限,这是否意味着ContextCompat.checkSelfPermission()能够充分检测由于Xposed等而导致的权限拒绝?
android android-permissions android-support-library android-6.0-marshmallow
我有一个带有一些C代码的Android应用程序,它使用link(2)系统调用来创建指向现有文件的硬链接.当我在Android 5.0.2上执行应用程序时,应用程序的这一部分可以运行.当我在Android-M设备上执行完全相同的应用程序时,link()系统调用返回-1"权限被拒绝".
我在日志中注意到这样的消息:
09-02 17:10:34.222 5291 5291 W ona.crackerjack: type=1400 audit(0.0:59): avc: denied { link } for name="fixed28" dev="mmcblk0p28" ino=82829 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=lnk_file permissive=0
Run Code Online (Sandbox Code Playgroud)
此消息显示在我的应用程序的日志消息附近,即link()返回-1"权限被拒绝",有时更早,有时更晚.
创建一个被认为不安全的硬链接?我注意到"scontext = u:r:untrusted_app".有没有办法使应用程序受信任,如果是这样,是否会让link()系统调用工作?
我试图将一些自定义字体应用于我的TextView一行,如Lisa Wray的帖子所述.这TextView是一个项目的一部分RecyclerView
我已将数据绑定依赖项添加到我的顶级构建文件中.
classpath 'com.android.tools.build:gradle:1.3.0'
classpath "com.android.databinding:dataBinder:1.0-rc1"
Run Code Online (Sandbox Code Playgroud)
我也将插件应用到我的主模块:
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
Run Code Online (Sandbox Code Playgroud)
这是item.xml将添加到的文件RecyclerView.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools">
<data></data>
<android.support.v7.widget.CardView
android:id="@+id/card_view"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="100dp"
android:layout_height="130dp"
android:layout_gravity="center"
card_view:cardCornerRadius="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="100dp"/>
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:font="@{@string/font_yekan}"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</layout>
Run Code Online (Sandbox Code Playgroud)
我添加了一个layout根元素并app:font="@{@string/font_yekan}"结合了一个静态setter方法:
@BindingAdapter({"bind:font"})
public static void setFont(TextView textView, String fontName) {
textView.setTypeface(Typeface.createFromAsset(textView.getContext().getAssets(), "fonts/" + fontName));
}
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.但是当我运行程序时,字体不会改变.但是,当我删除上面的静态方法时,我收到以下错误:
找不到参数类型为java.lang.String的属性'app:font'的setter.
所以数据绑定框架已经识别出绑定的东西,但是setter方法没有被调用(Logs不打印输出).
这里有什么问题?
java data-binding android android-databinding android-6.0-marshmallow
我正在尝试实现活动识别,因此它将支持api 23.我已经按照此处运行的权限指南进行操作:
https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous
我无法确定活动识别是否被归类为危险许可或正常?
即使在谷歌的活动识别样本中,他们也没有针对api 23:https://github.com/googlesamples/android-play-location/tree/master/ActivityRecognition
Android 6.0中是否可能不支持活动重新认知?
android android-permissions activity-recognition android-6.0-marshmallow
我正准备将我的应用程序定位到Android 6.0 Marshmallow.
将目标api设置为23时,应用程序会在启动时立即崩溃.logcat输出中没有有用的信息.(它给出了一个"请求的窗口不存在"IllegalStateException,但是,实际上没有什么比类名或行号更有用.)
这很好(不是真的),我最终将其缩小到我的启动活动,在那里我获得了用户的设备IMEI代码(TelephonyManager.getDeviceId()).需要添加运行时权限请求.我理解这一点.
但是,应用程序在众多活动中有60个类,因此需要排序很多代码.如何搜索代码以查找需要运行时权限的所有情况?
当然Google必须想到一种简单的方法让开发人员找到需要权限请求的位置?我想也许注释掉清单中的权限会触发使用权限的编译时错误,或类似的东西,但不是.
我目前的方法是通过浏览应用程序,当它崩溃时,按照我的启动活动进行上述操作,然后慢慢缩小它的位置.这非常低效且耗时.我现在很想把它留在API 22,但我知道迟早要做到这一点.
我已经编写了一个扫描蓝牙智能设备的应用程序,您可以从列表中选择一个,然后连接到该设备并交换一些数据。一切顺利,直到Android 6.0。
首先,我修复了新的权限系统,以便该应用在运行时请求位置权限,以便能够扫描设备。有了该应用程序,它就可以像以前那样工作了,但是在关闭蓝牙并再次打开后,该应用程序将不再连接,但始终会在gatt回调中返回状态为133的断开连接状态。
然后,我尝试了几件事:
这一切都没有解决问题。我能够使其再次正常工作的唯一方法是从“备份和重置”菜单中选择“网络设置重置”。此处提供的两款开发手机(Moto G3和Samsung S6)均具有此选项,在Android 6.0之前尚未见过。
我的问题是:是否还有其他人遇到此问题,并且是否有解决方法或解决方法?这可能会引起很多麻烦,因此关闭/打开蓝牙很常见,并且在进入飞行模式后该问题也会出现。
当我想到这个问题时,我想知道:是否真的没有办法找出是否存在采用的SD?对于摩托罗拉G3,getExternalFilesDirs()当存在外部SD时,有两条路径返回,但只有一条(模拟的,总是存在的)将SD格式化为内部.其他设备似乎表现相似.
所以,如果我想知道是否存在内部SD,我需要在哪里查看?是否有任何(非制造商特定的)提供,所以我可以检查,如果用户希望使用内部模拟,Environment.getExternalStorageDirectory()因为他已经安装了内部SD?
android android-sdcard android-6.0-marshmallow android-internal-storage
<uses-permission android:name="android.permission.WRITE_SETTINGS"
Run Code Online (Sandbox Code Playgroud)
我已经在我的清单中声明了上面的行,并且我要求获得活动开始的许可,但与其他权限不同,重新启动我的应用程序后,它再次请求权限.当我检查是否已授予权限时,我得到的结果不是仅授予此权限,但当我使用其他权限检查相同的内容时,会在用户完成后授予它们.
ActivityCompat.requestPermissions(SplashScreen.this,PERMISSIONS, 1);
Run Code Online (Sandbox Code Playgroud)
我查看:EasyPermissions.hasPermissions(this,PERMISSIONS)
permissions android android-permissions android-6.0-marshmallow
我正在使用Firebase推送通知.所有其他移动设备显示一个通知,但我的Marshmallow 6.0.1显示40到50个通知.
google.message_id每次都改变.
@Override
public void onMessageReceived(String from, Bundle data) {
// this method is called multiple times
}
Run Code Online (Sandbox Code Playgroud) android android-notifications android-6.0-marshmallow firebase-cloud-messaging