小编xba*_*esx的帖子

将列表作为varargs传递

我有一个List<Thing>,我想将它传递给声明的方法doIt(final Thing... things).有没有办法做到这一点?

代码看起来事情是这样的:

public doIt(final Thing... things)
{
    // things get done here
}

List<Thing> things = /* initialized with all my things */;

doIt(things);
Run Code Online (Sandbox Code Playgroud)

该代码显然不能因为工作doIt()需要Thing不能List<Thing>.

有没有办法传入List作为varargs?

这是在Android应用程序中,但我不明白为什么该解决方案不适用于任何Java

java android list variadic-functions

59
推荐指数
1
解决办法
5万
查看次数

com.android.vending.INSTALL_REFERRER不起作用

我最初问过这个问题,关于在安装时通过市场链接将参数传递到我的应用程序.

每个人似乎都在说BroadcastListener用这个intent-filter动作来创造一个com.android.vending.INSTALL_REFERRER.关于这一点的所有文档似乎暗示这是Google Analytics的功能(文档在v1中,但我现在只能下载v2 SDK ...这就是我正在使用的内容).我无法通过这些链接传递数据.我有我的完整清单和我的广播听众.我已将谷歌分析包括在内,以防万一.

它根本不起作用.我的广播监听器永远不会被调用,日志中不会打印出任何内容.救命!

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.robotsidekick.webbrowser"
      android:versionCode="4"
      android:versionName="4.0">

<uses-sdk android:minSdkVersion="17"/>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher">

    <activity
        android:name="WebBrowser"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <receiver
        android:exported="true"
        android:name="com.robotsidekick.webbrowser.InstallReceiver">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>

</application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

广播听众

public class InstallReceiver extends BroadcastReceiver
{
    private static final String TAG = "InstallReceiver";

    public void onReceive(Context …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver google-play install-referrer

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

Android网址覆盖不适用于重定向

我有一个我在我的Android应用程序中覆盖的网址.单击从电子邮件到该链接的链接会弹出Intent Chooser对话框("使用完成此操作").但是,点击<a>Chrome中的相同链接(在标记中)(在Android 4上)会将我重定向到该网址,但不会提供该网址Intent Chooser.

如果我使用指向<a>Google Play商店(https://play.google.com)的链接替换代码中的链接,则再次点击该链接会弹出Intent Chooser.

Google Play商店和Chrome是否有特别之处,或者我在配置我的网址时做错了什么?我有什么办法可以用html来完成这项工作吗?

这是 <intent-filter>

<activity
    android:label="@string/app_name"
    android:name="..."
    >
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>

        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>

        <data android:scheme="https"
              android:host="www.example.com"
            />
        <data android:scheme="http"
              android:host="www.example.com"
            />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

(重定向到网址也不会弹出Intent Chooser对话框,但我认为上面的情况更明确地表达了我的问题.)

另外值得注意的是,我相当肯定这一切都在我的域名失效时工作.一旦我的域名上线,这就停止了.这可能是我的想象力,因为我当时并不是100%专注于这个问题.

Chrome是否可能会特别对待Google Play商店的网址,否则它会在打开之前等待来自网址的非200响应Intent Chooser

android url-scheme intentfilter android-intent

9
推荐指数
1
解决办法
2788
查看次数

大使可以处理CORS的要求吗?

我很抱歉,如果这是一个非常无知的问题,但是大使是否有可能真正处理CORS标头和飞行前OPTION响应?

对于我来说,文档(https://www.getambassador.io/reference/cors)似乎有点模棱两可,只是有一些钩子可以阻止请求,或者它可以真正代表服务进行响应。

这是我的情况:在某些微服务的所有http请求之前,我都有大使。为了[理由],我们现在需要一个单独的域来向同一位大使发出请求。

我已经配置了AuthService,并且根据文档“当您使用外部授权时,每个传入的请求都会经过身份验证,然后再路由到其目的地,包括飞行前OPTIONS请求。” 这很有意义,这就是我所看到的。我的AuthService已配置为允许正确运行,并且似乎可以正常运行。AuthService使用适当的标头进行响应,但是大使似乎只是忽略了它,仅在乎AuthService是否以200进行响应。(这似乎是完全合理的。)

我在我的大使模块上对此进行了注释:

getambassador.io/config: |
  --- 
  apiVersion: ambassador/v1
  kind:  Module
  name:  ambassador
  config:
    service_port: 8080
    cors:
      origins: [my domain here]
      credentials: true
Run Code Online (Sandbox Code Playgroud)

而且这似乎并没有达到我的期望,它可以处理CORS标头并进行预检...相反,它将其转发给服务以处理所有CORS内容。

cors kubernetes microservices ambassador

7
推荐指数
1
解决办法
301
查看次数

Android淡出LinearLayout永远不会启动

我是Android新动画的新手,我似乎有一个简单的问题......我有一个启动/加载屏幕,我想在完成时淡出,然后显示应用程序.

我的布局看起来像这样(样式只是设置一个背景图像):

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/homeParentContainer"
    style="@style/LayoutWithBgStyle"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/homeSplashLayout"
        style="@style/LayoutWithSplashStyle"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/homeMainLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical"
        android:visibility="gone" >
    </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

然后我尝试了两种不同的方法来淡出启动画面并设置主屏幕:

final Animation fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
final View splash = findViewById(R.id.homeMainLayout);
fadeOut.setAnimationListener(new AnimationAdapter()
{
    @Override
    public void onAnimationEnd(final Animation animation)
    {
        splash.setVisibility(View.GONE);
        findViewById(R.id.homeMainLayout).setVisibility(View.VISIBLE);
    }

    /** And the other two methods */

});
splash.startAnimation(fadeOut);
Run Code Online (Sandbox Code Playgroud)

然后我尝试了自己的动画:

final AlphaAnimation fadeOut = new AlphaAnimation(1.0F,  0.0F);
fadeOut.setDuration(1000);
final View splash …
Run Code Online (Sandbox Code Playgroud)

android fadeout android-animation

6
推荐指数
1
解决办法
2101
查看次数

如何在布局中垂直居中两个TextView

我有一个RelativeLayout(我没有结婚)和两个TextView.我希望第一个的底部TextView与它的父级的中心对齐,而第二个的顶部TextView与它的父级的中心对齐.

在此输入图像描述

我在上图中在父母的(垂直)中心放了一条绿线.该TextViews为目前完全正确的位置,但是我这样做,我会用保证金的以下描述和他们对准父,知道父母的大小.

出于各种原因,我不能只使用一个TextView并将其置于中心位置.另外我不知道父母的高度,所以我不能将每个对齐到父母的顶部/底部,并将它们向下/向上边缘以使它们居中.

我也尝试过另一个View占据一半高度的东西invisible,但layout_height不会占用百分比(或者至少它给了我错误).

我有什么想法可以做到这一点?

我应该把两个TextViews放在另一个布局中并拥有该中心吗?

android relativelayout

6
推荐指数
1
解决办法
3851
查看次数

在LabeledIntent中包含Intent用于显示目的

要求:

我的应用中有一个"分享"按钮.我有要求通过Facebook分享.我需要选择是否安装原生Facebook应用程序.如果未安装该应用,我们的决定是将用户发送到facebook.com进行分享.

现状:

我可以检测到何时未安装本机应用程序(通过包名称),并向选择器添加其他意图.

问题:

用户必须通过"Facebook的网站"选择分享的项目说"浏览器"并具有Android浏览器图标.LabeledIntent项目没有出现,我得到"没有找到Intent的活动{act = android.intent.action.VIEW dat = ...}

守则(简化......):

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, "check this out");
intent.putExtra(Intent.EXTRA_TEXT, urlToShare);
boolean facebookInstalled = false;

Intent chooser = Intent.createChooser(intent, "Share this link!");
if (!facebookInstalled)
{
    Intent urlIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/sharer/sharer.php?u=" + Uri.encode(urlToShare)));
    Intent niceUrlIntent = new LabeledIntent(urlIntent, context.getApplicationContext().getPackageName(), "Facebook's Website", R.drawable.icon);

    // Ideally I would only add niceUrlIntent in the end, but that doesn't add anything to the chooser as-is
    chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[urlIntent, niceUrlIntent]);
}
context.startActivity(chooser);
Run Code Online (Sandbox Code Playgroud)

解决方案 …

android android-intent

5
推荐指数
1
解决办法
2125
查看次数

拉将Github改为Github

假设我有一个Github存储库.

  1. 我复制了原版.
  2. 我将Github存储库分叉以构建第二个存储库.
  3. 我改变了原始的克隆.将这些更改推送到Github.
  4. 我现在想将上面步骤2中提到的更改引入forked存储库.

这可能与Github(不使用git)?

我知道我可以在克隆的存储库中添加第二个远程(fork),然后在那里推送更改(这里相关的答案),但我很好奇是否有一个替代方法Github提供将更改推送到分叉你的回购副本.

git github

5
推荐指数
1
解决办法
138
查看次数

更改ActionBar主页/向上箭头图标

我注意到,使用新的Google应用程序,他们正在更新小的Home/Up图标,不是箭头,而是三条小线(至少在Android 4.2上).

在此输入图像描述

他们是如何实现这一目标的?我没有在ActionBar中看到它的API ...

android android-actionbar

5
推荐指数
1
解决办法
4599
查看次数

使用EditText的AlertDialog的更好解决方案

我想要一个带有EditText字段的AlertDialog来接受输入.这本身就很简单.但是,有一些"显而易见"的功能,我想从这个请求中得到影响.我会一个接一个地拿它们.我正在寻找那些对这些事情有更简单解决方案的人.我猜测解决方案是,"编写自己的自定义对话框,你懒惰的屁股."

AlertDialogEditText

final EditText input = new EditText(context);
final AlertDialog dlg = new AlertDialog.Builder(this).
    setTitle("Title").
    setView(input).
    setCancelable(false).
    setPositiveButton(android.R.string.ok, new OnClickListener()
    {
        @Override
        public void onClick(final DialogInterface dialog, final int which)
        {
            /* Handle ok clicked */
            dialog.dismiss();
        }
    }).
    setNegativeButton(android.R.string.cancel, new OnClickListener()
    {
        @Override
        public void onClick(final DialogInterface dialog, final int which)
        {
            /* Handle cancel clicked */
            dialog.dismiss();
        }
    }).create();
dlg.show();
Run Code Online (Sandbox Code Playgroud)

是的,很棒.如果输入字段立即聚焦(并显示键盘),那肯定会很好,对吗?

AlertDialog聚焦EditText 以下代码将是create()之前和之后dlg.show()

/** This requires API Level 8 or greater. …
Run Code Online (Sandbox Code Playgroud)

android ime android-edittext android-alertdialog

4
推荐指数
1
解决办法
1896
查看次数

Android WebView显示纯文本而不是html

首先,我要说这只是Android 2及更早版本的问题(4似乎没有受到影响,我没有测试3).

我有一个WebView从字符串加载HTML.HTML看起来像这样:

<html>  
    <head>
        <link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' />
    </head>
    <body>
        <h1>Hello World</h1>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以看到css文件如下所示:

body {
    font-family: "Lucida Console", "Lucida Sans Typewriter", Monaco, "Bitstream Vera Sans Mono", monospace;
}
h1 {
    border-bottom: 3px solid #ccc;
}
Run Code Online (Sandbox Code Playgroud)

WebView代码如下所示:

final WebView webview = new WebView(this);
setContentView(webview);
final String result = "<html><head><link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' /></head><body><h1>Hello World</h1></body></html>";
webview.loadData(result, "text/html", Encoding.UTF_8.toString());
Run Code Online (Sandbox Code Playgroud)

怎么了

我看到html代码,WebView好像我已经将mime类型设置为纯文本.

html作为纯文本发生了什么

我期待什么(以及Android 4.x中会发生什么

我看到了html WebView

有一些事情必须是真实的,以显示我看到的症状:

  • Android 2.x(我使用的是2.3.7和2.2)
  • 必须通过url访问css href="http://www.robotsidekick.com/test.css?rev=0"而不是href="test.css"(但是如果它是真正的css文件 …

android urlencode android-webview

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