"shouldOverrideUrlLoading"真的被弃用了吗?如果是这样,我可以使用什么呢?
似乎shouldOverrideUrlLoading已经弃用了针对Android N的应用程序,我需要让应用程序自API 19开始工作,直到最新的Android N(测试版),我使用的是Android N中的一些新功能(如Data Saver),因此定位Marshmallow无法解决这个问题,因为我需要使用这些新功能,这是我使用的代码的一部分:
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
if (url.startsWith("http:") || url.startsWith("https:")) {
...
} else if (url.startsWith("sms:")) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是Android Studio给我的消息:
覆盖'android.webkit.WebViewClient'中不推荐使用的方法此检查报告在指定的检查范围中使用不推荐的代码的位置.
我想知道是否使用@SuppressWarnings("deprecation")将让我在API 19上工作直到最新的Android N Beta(及其发布时的最终版本),我无法自己测试,我从未使用过,我需要确定它有效,所以,任何人都能说出来?
android deprecated webview android-webview deprecation-warning
我正在编写一个Activity A启动Activity B使用的应用程序
startActivityForResult(intent, -101);
Run Code Online (Sandbox Code Playgroud)
但是在调用时,它会回复以下错误日志:
E/AndroidRuntime( 1708): java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
E/AndroidRuntime( 1708): at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:837)
Run Code Online (Sandbox Code Playgroud)
可能它可能是-101但我不确定.有没有人对此有任何想法?
我正在使用Android Studio/Gradle.
app\src\main\android_asset文件夹中有一个名为chart.html的文件.
我正在尝试将此文件加载到我的webview中,如下所示:
WebView view = new WebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("file:///android_asset/chart.html");
setContentView(view);
Run Code Online (Sandbox Code Playgroud)
但我总是得到错误:无法加载因为ERR_FILE_NOT_FOUND.
我在这里错过了什么?
我正在尝试使用工具栏开发一个活动(该示例或多或少取自教程),但工具栏始终与其他内容的一部分重叠.这是一个截图:
蓝色工具栏与其他一些内容重叠.我试图在SO上搜索类似的问题,但只找到了一些无关的东西.我还试图改变一些元素的顺序并替换wrap_content< - > match_parent,这最多会使布局恶化.
我确信我遗漏了一些非常基本的东西,但我看不出是什么.
代码activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity" >
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"/>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
代码content_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:useDefaultMargins="true"
android:alignmentMode="alignBounds"
android:columnOrderPreserved="false"
android:columnCount="4"
>
<TextView
android:text="@string/MainTitle"
android:textSize="32dip"
android:layout_columnSpan="4"
android:layout_gravity="center_horizontal"
android:id="@+id/textView1"
/>
<TextView
android:text="You can configure email in just a few steps:"
android:textSize="16dip"
android:layout_columnSpan="4"
android:layout_gravity="left"
/>
<TextView
android:text="Email address:"
android:layout_gravity="right"
/>
<EditText …Run Code Online (Sandbox Code Playgroud) 我有一个自定义视图,在onDraw()我,我试图执行位图屏蔽.我有一个squareBitmap(红色)填充整个视图,我有一个circleBitmap(蓝色)充当面具.我正在使用模式:PorterDuff.Mode.DST_IN.
我期待的结果是一个红色的圆圈.我明白了,但我也得到了一个黑色的不透明背景.我不想要这种不透明的背景,而应该是透明的.Figure 1是我得到Figure 2的结果,是我正在寻找的结果.
我的代码:( onDraw()为了这个问题,我把所有内容都移到了里面)
protected void onDraw(Canvas canvas) {
final int width = canvas.getWidth();
final int height = canvas.getHeight();
Bitmap circleBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas circleCanvas = new Canvas(circleBitmap);
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setStyle(Paint.Style.FILL_AND_STROKE);
p.setColor(Color.BLUE);
circleCanvas.drawCircle(width / 2, height / 2, width / 2, p);
p.setColor(Color.RED);
Bitmap squareBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
Canvas squareCanvas = new Canvas(squareBitmap);
final Rect squareRect = new Rect(0, …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序,我想在Crashlytics/Fabric(调试和发布)中有两个不同的项目.
我知道这可以通过两个不同的包名来实现,但在我的情况下,这两种构建类型的包名必须相同.
是否有可能有两个具有相同包名称的碰撞项目?
我在使用espresso测试活动启动时遇到此错误.
android.support.test.espresso.base.DefaultFailureHandler $ AssertionFailedWithCauseError:想要匹配1个意图.实际上匹配了2个意图.
令人惊讶的是,相同代码的其他活动启动测试正在通过.
@RunWith(AndroidJUnit4.class)
public class HomeActivityTest {
@Rule
public final IntentsTestRule<HomeActivity> mHomeActivityRule = new IntentsTestRule<HomeActivity>(HomeActivity.class);
@Test
public void testFundTransferActivityStarted() {
onView(withId(R.id.button_fund_transfer)).perform(click());
intended(hasComponent("mypackage.FundTransferActivity"));
}
}
Run Code Online (Sandbox Code Playgroud)
按钮单击只需使用startActivity启动FundTransfer活动.
我想写一个APP来记录屏幕,有两种方式,RecordHelper_Method_A和RecordHelper_Method_B.
在RecordHelper_Method_A中,我将mMediaRecorder,MediaProjection mMediaProjection和mVirtualDisplay定义为静态var,它很容易调用,例如StartRecord( mContext, requestCode, resultCode,data),StopRecord().
在RecordHelper_Method_B中,我需要在主Activity类中定义mMediaRecorder,MediaProjection mMediaProjection,并在调用时传递参数StartRecord(mMediaRecorder, mMediaProjection,mVirtualDisplay),'StopRecord(mMediaRecorder,mMediaProjection,mVirtualDisplay)`......,这有点复杂.
我不知道哪一个更好,而且当我结束APP时,我不知道是否可以在RecordHelper_Method_A中正确释放这些静态var.
顺便说一句,如果你有更好的方法,请告诉我吗?谢谢!
RecordHelper_Method_A
public class RecordHelper_Method_A {
private static MediaRecorder mMediaRecorder;
private static MediaProjection mMediaProjection;
private static VirtualDisplay mVirtualDisplay;
public static void StartRecord(Context mContext,int requestCode, int resultCode, Intent data){
mMediaRecorder = new MediaRecorder();
initRecorder();
MediaProjectionManager mProjectionManager = (MediaProjectionManager) mContext.getSystemService(Context.MEDIA_PROJECTION_SERVICE);
mMediaProjection = mProjectionManager.getMediaProjection(resultCode, data);
mVirtualDisplay=mMediaProjection.createVirtualDisplay("MainActivity",
400,600, 300,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
mMediaRecorder.getSurface(), null, null);
MediaProjectionCallback mMediaProjectionCallback = new MediaProjectionCallback();
mMediaProjection.registerCallback(mMediaProjectionCallback, null);
mMediaRecorder.start();
}
public static void StopRecord(){
mMediaProjection=null;
mMediaRecorder.stop(); …Run Code Online (Sandbox Code Playgroud) Build Flavors 通常通过 android gradle 插件在 Android 应用程序中使用。这允许项目具有目录结构
src
- main
- com.stack.A.java
- debug
- com.stack.B.java
- release
- com.stack.B.java
Run Code Online (Sandbox Code Playgroud)
这只会B.java根据已选择的发布类型编译正确的。
有没有办法在不使用android gradle插件而只使用java插件的情况下镜像这个功能?
当我尝试构建我的解决方案时,我在 Visual Studio 2015 中收到以下错误Error Occurred while restoring nuget packages..... there are duplicate packages....。。因此,我的大部分程序集都references显示了黄色三角形并且没有恢复。
如何解决问题?
android ×8
gradle ×3
java ×3
webview ×2
android-view ×1
crashlytics ×1
deprecated ×1
toolbar ×1
xamarin ×1