小编Sre*_*ari的帖子

为ionic2项目创建自定义cordova插件

我们中的许多人都会经历类似的问题,但即使经过以下大多数相关链接引用link1参考link2,我也无法解决.

问题:

创建一个自定义插件(Cordova)以便在ionic2项目中使用它.

期望:此插件将能够与IOS和Android的本机功能进行交互.确切地说,我正在尝试使用cordova访问Ionic项目的本机SDK(Aruba内部定位SDK)的功能.

步骤1根据参考链接1初始创建插件

第2步创建Ionic 2项目(使用基本步骤创建)

步骤3插件中的JavaScript文件无法在Ionic2中引用和访问.

谷歌搜索后,我发现了这个讨论,由于以下原因,它被告知在插件中创建界面.

从'../../../plugins/xxx/*.js'导入{myPluginName}

因为插件不是离子本机包的一部分而无法工作.

如果你有自定义插件,你可以做一些事情.

1)制作PR以将其添加到离子原生物中

2)使用原始插件API.您可以使用原始插件API,而不必将其作为Ionic Native的一部分.该插件位于窗口对象上,因此您可以正常定位api

window.plugin.myPlugin.myMethod()

根据GITHUB Example项目,这种方式应该实现接口

interface CordovaPlugins {
  ZPLPrinter: ZPLPrinter;
}

interface ZPLPrinter {

  print(
    ipaddress: string,
    bclabels: any,
    printSuccess: (ip: string, labels: string[]) => void,
    printError: (message: string) => void): void;

}
Run Code Online (Sandbox Code Playgroud)

现在我在我的插件中创建了一个类似的界面,插件的www文件夹中有以下内容

interface CordovaPlugins {
  Communicator: Communicator;
}

interface Communicator {

  getInfo(successCallback: any, errorCallback: any);

}
Run Code Online (Sandbox Code Playgroud)

理想情况下,此接口将在JS文件中定位此方法

Device.prototype.getInfo = …
Run Code Online (Sandbox Code Playgroud)

javascript plugins android cordova ionic2

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

从Url缓存并保存所有图像在WebView中加载并加载它

我在Android中运行Web应用程序.我可以缓存我的网页,所以如果用户没有网络连接,他仍然可以从缓存访问网页.但它仅在用户没有Internet连接时运行.

现在,为了优化我的应用程序,当用户有互联网连接时,我想要缓存所有显示的图像WebView并将其存储在本地/缓存它,当用户打开一个具有相同src图像的页面时,我已经缓存它,它从本地加载,不要再从网上加载它.或者可能不是图像,而是html访问缓存它的页面,当用户再次返回到url页面时,Webview从本地加载,而不是从Internet加载.

我已经搜索了两天的代码,但仍然找不到解决方案.

感谢帮助.

android caching image webview

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

ios将一个void*传递给Swift中的UISaveVideoAtPathToSavedPhotosAlbum

我是Swift的新手.我正在尝试在我的班级中使用方法签名:

func UISaveVideoAtPathToSavedPhotosAlbum(_ videoPath: String!,
                                   _ completionTarget: AnyObject!,
                                   _ completionSelector: Selector,
                                   _ contextInfo: CMutableVoidPointer)
Run Code Online (Sandbox Code Playgroud)

最后一个参数contextInfo是obj-c中的void*.

如果我在Swift中传递字典,我会得到一个NSDictionary不是CMutableVoidPointer错误的子类型.非常感谢任何帮助.我不知道如何void在Swift中传递*等效参数而不会出现该错误.

objective-c void-pointers ios swift

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

来自Android中GPS_PROVIDER或NETWORK_PROVIDER的位置不一致

我想做什么

  • 使用指定间隔获取用户位置,Service以便只要应用程序正在运行Location即可

我面临的问题

  • 即使我长时间在同一地点,每次LatitudeLongitude也会以不同的Accuracy级别变化
  • 因此,即使用户未更改其位置,如果我在其中绘图LocationGoogleMap它也会因我的缩放级别而跳到非常近的位置18.0f
  • mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLon, 18.0f));

我已经尝试了stackoverflow链接一stackoverflow链接二中 提到的方法,

但是即使我坐在相同的位置并以固定间隔检索位置,纬度和经度也不同,请参见每个纬度结尾处的突出显示的值

纬度:12.8379 283长:经度:77.6647 266

纬度:12.8379 233长:经度:77.6647 368

纬度:12.8379 285经度:经度:77.6647 506

纬度:12.8379 245长:经度:77.6647 546

但仍然每次Accuracy有所不同,Lat Lon都会稍有变化。

因为我的代码试用版与链接的中提到的完全相同,所以我不仅在这里复制粘贴。如何解决

java gps android google-maps geolocation

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

无法在Java和Kotlin混合项目上注入Dagger2

我有一个主要用Java编写的项目,但是我正在慢慢转移到Kotlin从事新活动。该项目应用了Dagger2,并且与基于Java的活动一起使用时,可以完美地工作。但是,当我创建Kotlin活动并尝试注入时,出现以下错误。

LoginIDPresenter没有@Inject构造函数或通过@Provides-或-带@Produces注释的方法不能提供。此类型支持成员注入,但不能隐式提供。

   void inject(LoginIDActivity loginIDActivity);

     com.maxis.mymaxis.ui.logindigitalid.LoginIDPresenter is injected at
         com.maxis.mymaxis.ui.logindigitalid.LoginIDActivity.loginIDPresenter
     com.maxis.mymaxis.ui.logindigitalid.LoginIDActivity is injected at
         com.maxis.mymaxis.injection.component.ActivityComponent.inject(loginIDActivity)
Run Code Online (Sandbox Code Playgroud)

再次重申一下,当我在Java活动中进行注入时,它可以完美地工作。另外,我的Module和Component文件全部使用Java。仅当我创建Kotlin活动并尝试在其中进行注入时,我才会收到错误。

LoginIDPresenter.kt

class LoginIDPresenter : BasePresenter<LoginIDMvpView>() {

    lateinit var mContext : Context

    @Inject
    fun LoginIDPresenter(@ActivityContext context: Context){
        mContext = context
    }

    override fun attachView(loginIDMvpView: LoginIDMvpView) {
        super.attachView(loginIDMvpView)
    }

    override fun detachView() {
        super.detachView()
        mCompositeSubscription.clear()
    }
}
Run Code Online (Sandbox Code Playgroud)

LoginIDActivity.kt

class LoginIDActivity : BaseActivity(), LoginIDMvpView {

    @Inject lateinit var loginIDPresenter : LoginIDPresenter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        loginIDPresenter.attachView(this)
    }

    override …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection kotlin dagger dagger-2

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

如果键盘处于打开状态,则隐藏activity_main.xml的一部分(Android)

我在底部显示了以下activity_main.xml。在那里,出现a CoordinatorLayout和2 LinearLayouts。第一个LinearLayout1具有一个EditText用于输入一些文本的按钮,以及一个用于发送文本的按钮。第二个有另外两个按钮。

如果我单击EditText,键盘将显示出来,并使LinearLayout2中的所有内容几乎不可见。所以,我想在打开键盘时将两个按钮都隐藏在最后一个布局中。

我已经发现可以使用android:windowSoftInputMode="stateHidden"技巧,但这仅与中的活动有关AndroidManifest.xml。我只想在第二线性布局中使用此内部。已经尝试在此使用它,但没有成功。

另外,我要在xml中处理什么并保持MainActivity代码干净。有任何可能吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
    ...
    <android.support.design.widget.CoordinatorLayout>
        <android.support.v7.widget.RecyclerView/>
    </android.support.design.widget.CoordinatorLayout>

    <LinearLayout>
        <EditText/>
        <Button android:id="@+id/button_send"/>
    </LinearLayout>

    <LinearLayout>
        <Button/>
        <Button/>
    </LinearLayout>

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

xml keyboard android android-layout

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

SearchView 在文本更改侦听器或文本提交中未显示任何结果

我正在尝试实现 aSearchViewOptionsMenu的 a Fragment。该onQueryTextChangeonQueryTextSubmit不工作。我不确定我哪里出错了。

菜单文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/profile"
        android:orderInCategory="10"
        android:title="Profile"
        app:showAsAction="never">
    </item>
    <item
        android:id="@+id/settings"
        android:orderInCategory="11"
        android:title="Settings"
        app:showAsAction="never">
    </item>
    <item
        android:id="@+id/action_search"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="always|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="Search"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

我试图从 SearchView 访问文本的片段部分:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.browse_story_fragment, menu);

        MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
        searchView = (SearchView) myActionMenuItem.getActionView();

        SearchView.OnQueryTextListener listener = new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextChange(String query) {
                query = query.toLowerCase();

                Log.e("queryText",query);

                return false;

            }
            public …
Run Code Online (Sandbox Code Playgroud)

java android android-optionsmenu searchview

0
推荐指数
1
解决办法
5582
查看次数