我正在 Android M Dev Preview 上测试权限系统。我有一个关于回调函数的问题。Activity 类有一个新的 API:
public void onRequestPermissionsResult (int requestCode,
String[] permissions, int[] grantResults) { }
Run Code Online (Sandbox Code Playgroud)
我想问一下为什么将 permissions 和 grantResults 参数定义为数组?我知道使用 可以同时询问多个权限requestPermissions(),但是如果请求代码用于请求的权限集,那么仅拥有一个整数 grantResults (不确定权限参数)是否就足够了?
我在Android 6.0,Marshmallow上遇到了日期格式问题.抛出下面提到的异常的代码是我的应用程序用于API请求("客户端")的纯Java库(单独构建).该库是用Java 1.6构建的,如果它是相关的...无论如何,这是代码;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd E hh:mm aa", Locale.UK);
Date eventDate = dateFormat.parse(StringUtils.substring(record, 0, 23).trim());
Run Code Online (Sandbox Code Playgroud)
...... record有价值;
2015-10-23 Fri 10:59 PM BST 3.60 meters
Run Code Online (Sandbox Code Playgroud)
......"修剪"之后;
2015-10-23 Fri 10:59 PM
yyyy-MM-dd E hh:mm aa
Run Code Online (Sandbox Code Playgroud)
这段代码自Froyo的古老时代以来一直有效,并经过单元测试.除了棉花糖之外,抛出异常;
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: SynchroniseTidePosition.doInBackground
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: java.text.ParseException: Unparseable date: "2015-10-23 Fri 10:59 PM" (at offset 21)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: at java.text.DateFormat.parse(DateFormat.java:579)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: at com.oceanlife.rover.handler.XTideParser.parseResponse(XTideParser.java:69)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: at com.brantapps.oceanlife.task.SynchroniseTidePosition.doInBackground(SynchroniseTidePosition.java:107)
10-23 21:01:56.816 4091-4110/com.oceanlife E/ParseException: at …Run Code Online (Sandbox Code Playgroud) 使用DevicePolicyManager在Android 6.0中执行lockNow()后,我们如何保留无缝指纹解锁效果?
假设在具有指纹扫描仪的设备上,应用程序调用lockNow()具有"USES_POLICY_FORCE_LOCK"并且已被授予设备管理员状态.
这是lockNow()函数的文档:
public void lockNow()
立即锁定设备,就像锁定屏幕超时在此呼叫时已过期一样.
呼叫设备管理员必须已请求USES_POLICY_FORCE_LOCK才能调用此方法; 如果没有,则抛出安全异常.
获得设备管理员状态并执行锁定就好了.为了便于参考,请参阅我使用的方法的SO问题.
问题是在手机锁定后,指纹扫描仪不再能够顺利解锁手机.相反,指纹扫描仪会提示我输入后备PIN码. 为了在执行lockNow()调用后保留指纹解锁效果,Android 6.0中是否有新功能?
我查看了所有的DevicePolicyManager标志(在文档中),它似乎提供了禁用事物而不是启用事物.
谢谢!
初始代码是官方文档:Loading Large Bitmaps Efficiently。
我开始四处寻找,发现图像没有按照文档中的描述调整大小:
如果设置为 > 1 的值,则请求解码器对原始图像进行二次采样,返回较小的图像以节省内存。样本大小是对应于解码位图中单个像素的任一维度中的像素数。例如,inSampleSize == 4 返回一个图像,其宽度/高度是原始图像的 1/4,像素数是 1/16。任何 <= 1 的值都被视为与 1 相同。 注意:解码器使用基于 2 的幂的最终值,任何其他值将向下舍入到最接近的 2 的幂。
当我运行代码时:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
Log.e(LOG_TAG, "orig img size " + options.outWidth + "x" +
options.outHeight);
// Calculate inSampleSize
// options.inJustDecodeBounds = false; // version 2
for (int i = 2; i<20; i*=2) {
options.inSampleSize = i;
Log.d(LOG_TAG, "inSampleSize: " + options.inSampleSize);
Bitmap b = …Run Code Online (Sandbox Code Playgroud) 我有一台运行 MarshMallow 6.0 的 Nexus 5x,它与无法访问互联网的设备的 Wi-Fi 相关联。Android 不断断开连接,甚至在几次尝试后都不会自动重新连接,因为它检测到没有 Internet 访问。
即使没有 Internet 访问,我如何强制 Android 保持与此 Wi-Fi 的连接?
该设备未扎根,但我可以在实际选择此 Wi-Fi 点的应用程序中以编程方式更改“事物”。
编辑 #1
在我的应用程序中,我目前正在使用 enableNetwork API。该文件指出:
如果应用程序的目标 SDK 版本为 LOLLIPOP 或更新版本,即使连接了 Wi-Fi,网络通信也可能无法使用 Wi-Fi;流量可能会通过另一个网络发送,例如蜂窝数据、蓝牙网络共享或以太网。例如,如果另一个提供 Internet 访问(例如蜂窝数据)的网络可用,流量将永远不会使用不提供 Internet 访问(例如无线打印机)的 Wi-Fi 网络。需要确保其网络流量使用 Wi-Fi 的应用程序应使用诸如 bindSocket(java.net.Socket)、openConnection(java.net.URL) 或 bindProcessToNetwork(Network) 之类的 API 来执行此操作。
在这种特殊情况下,潜在的其他网络(蜂窝数据)关闭,因为设备被迫处于平面模式。
几个小时前我已经将我的Android设备版本更新到6.0.1,从那时起我的应用程序崩溃了,当我离开活动时,它持有DrawerLayout并出现此错误:
12-16 16:08:04.122 9331-9331/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.my.app, PID: 9331
java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:831)
at android.view.View.measure(View.java:18794)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:18794)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:124)
at android.view.View.measure(View.java:18794)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18794)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18794)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18794)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
at android.view.View.measure(View.java:18794)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at …Run Code Online (Sandbox Code Playgroud) 我有一个动画列表xml drawable anim_progress.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="100">
<scale android:drawable="@drawable/frame_1" android:scaleGravity="center"/>
</item>
<item android:duration="100">
<scale android:drawable="@drawable/frame_2" android:scaleGravity="center"/>
</item>
<item android:duration="100">
<scale android:drawable="@drawable/frame_3" android:scaleGravity="center"/>
</item>
.
.
.
</animation-list>
Run Code Online (Sandbox Code Playgroud)
我使用scale标签,因为图像frame_x.png比容器视图大.其原因是能够适应大多数屏幕尺寸.
我使用这个框架动画作为indeterminateDrawable我的自定义ProgressBar:
<ProgressBar
android:layout_width="match_parent"
android:layout_height="match_parent"
android:indeterminateOnly="true"
android:indeterminate="true"
android:foregroundGravity="center"
android:indeterminateDrawable="@drawable/anim_progress"
/>
Run Code Online (Sandbox Code Playgroud)
它在Marshmallow之前的Android版本中运行正常.我检查了模拟器和设备.但在棉花糖中,它什么也没有显示出来.空白的空白空间.以及Android Studio中的预览窗格.
如果我scale从中移除标签animation-list,它在Marshmallow中运行良好,并以正确的方式进行缩放,但似乎在其他Android版本中被裁剪.
我知道我可以在drawable-v23文件夹中创建单独的文件,之前我想问一下是否有人可以通过xml分享其他技术来缩放Marshmallow中可绘制的进度条框架动画.
我正在使用 ScaleGestureDetector 来检测捏合和捏合动作,方法是获取比例因子,如果小于 1,则缩小,反之亦然。
但问题在于,在 Android 6.0 上,比例因子始终为 1.0,这使得无法区分捏合和捏合。
在此先感谢您的帮助。
import android.content.Context;
import android.os.Handler;
import android.support.v4.view.GestureDetectorCompat;
import android.support.v4.view.MotionEventCompat;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.VelocityTracker;
import android.widget.FrameLayout;
public class TouchableWrapper extends FrameLayout
{
private GestureDetectorCompat mGestureDetector;
private ScaleGestureDetector mScaleGestureDetector;
private VelocityTracker mVelocityTracker;
private boolean acceptEvents=true;
ScaleGestureDetector temp;
private final GestureDetector.SimpleOnGestureListener mGestureListener = new GestureDetector.SimpleOnGestureListener()
{
@Override
public boolean onDoubleTap(MotionEvent e)
{
EventBus_Singleton.getInstance().post(new EventBus_Poster(Constants.MAP_DOUBLE_TOUCHED));
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return super.onDoubleTapEvent(e);
}
};
private …Run Code Online (Sandbox Code Playgroud) 我正在尝试请求运行时位置权限,但我的诺言不断抛出此异常:
“试图使用权限API,但主机活动未实现PermissionAwareActivity”
我的代码如下所示:
PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION)
.then((preGranted) => {
console.log('pre-granted', preGranted)
if (!preGranted) {
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{ 'title': 'Enable location', 'message': 'Boss said so..' }
)
.then((granted) => {
if (granted) {
console.log('GRANTED AFTER ASKING:', granted)
debugger
}
})
}
})
Run Code Online (Sandbox Code Playgroud)
在我的清单中,我有:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
有人听到过这个消息吗?什么是PermissionAwareActivity,无法在线查找有关它的任何信息。
android android-permissions react-native android-6.0-marshmallow
我创建了一个使用此hdodenhof CircleImageview库的应用程序。我的应用程序可在Android 7和7.1上正常运行,但在棉花糖/ Android 6等较低版本中崩溃。如何解决此问题?我已经阅读了他的GitHub帖子,但是由于人们要求从.xml中删除属性,所以它不能解决我的问题,但是我没有使用这些属性。
这是CircleImageView的简单实现:
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/civ_requests"
android:layout_width="80sp"
android:layout_height="80sp"
android:layout_margin="10sp"
android:src="@drawable/profilesvg" />
Run Code Online (Sandbox Code Playgroud)
这是错误:
FATAL EXCEPTION: main
Process: com.milind.locatemymate, PID: 4288
android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class de.hdodenhof.circleimageview.CircleImageView
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.milind.locatemymate.Fragment.Requests$1.onCreateViewHolder(Requests.java:152)
at com.milind.locatemymate.Fragment.Requests$1.onCreateViewHolder(Requests.java:103)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6685)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5869)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3225)
at android.view.View.measure(View.java:18788)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18788)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1632)
at …Run Code Online (Sandbox Code Playgroud) android android-layout android-xml layout-inflater android-6.0-marshmallow
android ×10
android-wifi ×1
android-xml ×1
animation ×1
bitmap ×1
device-admin ×1
fingerprint ×1
image ×1
java ×1
permissions ×1
react-native ×1
scale ×1
xml ×1