小编Don*_*rty的帖子

Android - sendOrderedBroadcast帮助

我想在我的Android应用程序中使用sendOrderedBroadcast.

我希望能够将Intent从我的一个应用程序发送到另一个应用程序,然后我想从收到Intent的应用程序中获取数据,在这种情况下是布尔值true或false.

这是当前的代码:

    Intent i = new Intent();
    i.setAction(GlobalData.PROPOSE_IN_DOMAIN_ROAM_INTENT);
    i.putExtra("com.testnetworks.QCLEVEL", aProposedTheoreticalQoSLevel);
    sendOrderedBroadcast(i, null, null, null, Activity.RESULT_OK, null, null);
Run Code Online (Sandbox Code Playgroud)

这是实现我想要的正确方法吗?

如果是这样,我将什么用作resultReceiver*参数?(第3个参数)

然后我如何从广播中收回数据?

我做了一个快速的谷歌,没有提出任何例子,任何帮助或例子非常感谢.

更新的代码:


sendOrderedBroadcast(i, null, domainBroadcast, null, Activity.RESULT_OK, null, null);
Run Code Online (Sandbox Code Playgroud)
class DomainBroadcast extends BroadcastReceiver{

    @Override
    public void onReceive(Context arg0, Intent intent) {
        String action = intent.getAction();

        if(GlobalData.PROPOSE_IN_DOMAIN_ROAM_INTENT.equals(action)){
            Log.d("BROADCAST", "Returning broadcast");

            Bundle b = intent.getExtras(); 
            Log.d("BROADCAST", "Returning broadcast " + 
                    b.getInt("com.testnetworks.INT_TEST"));
        }      
    }
Run Code Online (Sandbox Code Playgroud)
    @Override
    public void onReceive(Context context, Intent intent) {
            String action = intent.getAction(); 

            if(GlobalData.PROPOSE_IN_DOMAIN_ROAM_INTENT.equals(action)){

                Bundle b = …
Run Code Online (Sandbox Code Playgroud)

android broadcast broadcastreceiver android-intent

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

如何使用Android密钥库提供商存储密钥

我正在尝试使用Android 4.3中可用的Android密钥库提供程序来安全地保存私钥,然后使用此私钥来加密和解码数据.

我认为到目前为止我已经实现了正确的方法和代码,但是我目前面临着一个我无法弄清楚的奇怪问题.

我有一个名为KeyStorage的类,我用它来创建密钥对,加载KeyStore并检索私钥,这个类的代码如下:

public class KeyStorage {

public static final String ANDROID_KEYSTORE = "AndroidKeyStore";
private KeyStore keyStore;

public void loadKeyStore() {
    try {
        keyStore = KeyStore.getInstance(ANDROID_KEYSTORE);
        keyStore.load(null);
        Enumeration<String> aliases = keyStore.aliases();
        while(aliases.hasMoreElements())
            Log.e("E", "Aliases = " + aliases.nextElement());
    } catch (Exception e) {
        // TODO: Handle this appropriately in your app
        e.printStackTrace();
    }
}

public void generateNewKeyPair(String alias, Context context)
        throws Exception {

    Calendar start = Calendar.getInstance();
    Calendar end = Calendar.getInstance();
    // expires 1 year from today
    end.add(1, Calendar.YEAR); …
Run Code Online (Sandbox Code Playgroud)

encryption android android-keystore private-key

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

Android - 为两个意图注册广播接收器?

我想知道是否可以注册一个广播接收器来接收两个意图?

我的代码如下:

sipRegistrationListener = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction(); 

        if (SIPEngine.SIP_REGISTERED_INTENT.equals(action)){
            Log.d("SETTINGS ", "Got REGISTERED action");
        }   

        if (SIPEngine.SIP_UNREGISTERED_INTENT.equals(action)){
            Log.d("SETTINGS ", "Got UNREGISTERED action");
        }   
    }
};

context.registerReceiver(sipRegistrationListener, new IntentFilter(SIPEngine.SIP_REGISTERED_INTENT));
context.registerReceiver(sipRegistrationListener, new IntentFilter(SIPEngine.SIP_UNREGISTERED_INTENT));
Run Code Online (Sandbox Code Playgroud)

我每次发送它时都会获得注册意图,但是当我发送它时,我从未获得UNREGISTERED Intent.

我应该为UNREGISTERED Intent设置另一个广播接收器吗?

android intentfilter broadcastreceiver android-intent

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

Android - 连接问题

我有几个关于Android连接的问题,如果有人有任何见解,那就太棒了.

1)应用程序想要无线连接时的默认值是多少?是wlan吗?如果关闭wlan或周围没有接入点是3g还是gprs?

2)设备是否始终连接IP?或者当它从wlan或3g禁用时它会丢失其IP地址?

3)是一个应用程序,例如浏览器只连接到一个IP地址?或者它可以连接到每个无线电的多个地址,如gprs或wifi(wlan)?

4)应用程序可以决定打开套接字的连接吗?例如,我可以创建一个应用程序并决定是否将套接字连接到wlan或gprs?或OS是否决定?

5)最后,本机应用程序如何处理连接?以相同的方式?

android connectivity gprs wifi 3g

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

Android - onBackPressed()不起作用

我有针对Android 2.1的应用程序构建,我想覆盖后退按钮.

我跟着这个例子:

http://android-developers.blogspot.com/2009_12_01_archive.html

我的代码如下:


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
                && keyCode == KeyEvent.KEYCODE_BACK
                && event.getRepeatCount() == 0) {
            Log.d("CDA", "onKeyDown Called");
            onBackPressed();
        }

        return true;
    }

    @Override
    public void onBackPressed() {
    Log.d("CDA", "onBackPressed Called");
        Intent setIntent = new Intent(Intent.ACTION_MAIN);
        setIntent.addCategory(Intent.CATEGORY_HOME);
        setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(setIntent); 

        return;
    }   
Run Code Online (Sandbox Code Playgroud)

它适用于pre 2.x设备,但不适用于具有2.1 update-1的Hero和具有2.2的Nexus One.

这个例子中是否有我遗漏的东西?或者任何人都可以指出它为什么不起作用?

我甚至没有在logcat中按下按钮.

android overriding back-button

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

我可以扩展Androids Contacts数据库吗?

我想知道是否有可能扩展Android Contacts数据库?

从这里 - http://d.android.com/reference/android/provider/ContactsContract.html

它说:

ContactsContract定义了与联系人相关的信息的可扩展数据库

可扩展性会向我建议我可以在正常值之外向联系人应用程序添加更多数据,例如姓名,号码,电子邮件,工作号码,家庭电话号码等.

但是,此页面的示例 - http://d.android.com/reference/android/provider/ContactsContract.RawContacts.html仅显示如何插入标准值(如名称),而不显示如何向联系人添加新字段.

此外,在网上搜索没有提供有关扩展联系人数据的大量信息.

所以我想知道它是否可能或者可扩展性是否涉及联系人的其他部分?

例如,我想为我的应用程序中具有特殊权限的联系人添加一个附加字段,这样当用户查看联系人时,他或她知道他们可以使用我的应用程序的用户.

这可能吗?

android contacts extensible android-contentprovider

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

iOS - 开始iOS教程 - 变量之前的下划线?

我开始学习如何在一分钟内开发一些iOS,而我目前正在开始使用我正在开发的IOS6书.

在第二章中,有一个简单的教程,显示两个按钮和一个标签,按下按钮时,标签上会显示按下一个按钮.

我已经完成了教程,但它提出了一个我无法找到答案的问题.

本教程使用ARC(自动引用计数),以防万一.

这是代码,

头文件:

#import <UIKit/UIKit.h>

@interface MTMViewController : UIViewController


@property (weak, nonatomic) IBOutlet UILabel *statusLabel;


- (IBAction)buttonPressed:(UIButton *)sender;

@end
Run Code Online (Sandbox Code Playgroud)

和m文件:

#import "MTMViewController.h"    

@implementation MTMViewController

- (IBAction)buttonPressed:(UIButton *)sender {


    NSString *title = [sender titleForState:UIControlStateNormal];

    NSString *plainText = [NSString stringWithFormat:@"%@ button pressed.", title];

    statusLabel.text = plainText;


}

@end
Run Code Online (Sandbox Code Playgroud)

以上是它出现在书中的方式,但是当在Xcode中进行教程时,我无法使用以下行编译:

statusLabel.text = plainText;
Run Code Online (Sandbox Code Playgroud)

而不得不改为:

_statusLabel.text = plainText;
Run Code Online (Sandbox Code Playgroud)

当我完成这个代码编译并运行良好,我试图找出为什么发生这种情况,通过回顾教程,看看我错过了什么,但我没有看到任何东西.

任何人都可以解释为什么书中的代码没有编译,为什么我必须在变量的前面添加下划线?这是正确的还是我做错了什么?

cocoa-touch objective-c ios automatic-ref-counting ios6

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

无法保存和恢复嵌套片段?

我有一个嵌套的片段,我试图恢复给定方向更改的状态.

首先,我的设置如下:

Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment
Run Code Online (Sandbox Code Playgroud)

在My Child片段中,我有onSaveInstance代码,如下所示:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    // Serialize the current dropdown position.
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActivity().getActionBar()
            .getSelectedNavigationIndex());
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在所有LifeCycle事件中定向设备时,返回savedInstance状态为null.

我是否为ChildFragment做错了?为什么我的州没有得到保存和归还?

android android-fragments android-orientation android-nested-fragment

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

NodeJS返回垃圾JSON

我正在尝试使用NodeJS编写一段简单的代码,以便从堆栈交换API中获取JSON.

这是我所针对的API- https://api.stackexchange.com/2.2/users?order=desc&sort=reputation&inname=donal%20rafferty&site=stackoverflow

这是我的代码:

var https = require('https'); //Use NodeJS https module

function getUserDataByName(userName, callback){

var stackOverflowUserURL = 'https://api.stackexchange.com/2.2/users?order=desc&sort=reputation&inname='+encodeURIComponent(userName)+'&site=stackoverflow';

https.get(stackOverflowUserURL, function(response){
    console.log("headers: ", response.headers);
    if (response.statusCode == 200) {
        var jsonString = '';
        response.on('data', function (chunk) {
            jsonString += chunk;
        });
        response.on('end', function () {
            console.log((jsonString));
            callback(JSON.stringify(jsonString));
        });
    }
    else{
        //error
        console.log("Error");
    }
});
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此数据时,数据总是以类似垃圾的文本状态返回,如下所示:

\\\u001f\b\u0000\u0000\u0000\u0000\u0000\u0004 \u0000uR n 0\f B \u0013 2\u0010 R 7 ?m?u\\u0018\\u0004?\\u001d!??Jr=???vS\\u0004\\u0005??????H????Cր Q n \u0012\u0014 {克\\"] + ZV\u001f(V%的|)QU.O\u000e \u0012Ѹ\ u0005\U0003\u00130a \u0006BSӨC^ BWI\u000bCb\u0017e\u0013q \\"DlO` @ ^\NQ\u0017 …

javascript json node.js

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

如何使用Sinon.js测试Angular $ modal?

我正在尝试在AngularJS中为$ modal编写单元测试.模态的代码位于控制器中,如下所示:

$scope.showProfile = function(user){
                var modalInstance = $modal.open({
                templateUrl:"components/profile/profile.html",
                resolve:{
                    user:function(){return user;}
                },
                controller:function($scope,$modalInstance,user){$scope.user=user;}
            });
        };
Run Code Online (Sandbox Code Playgroud)

该函数在HTML中的ng-repeat中的按钮上调用,如下所示:

 <button class='btn btn-info' showProfile(user)'>See Profile</button>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,用户被传入并在模态中使用,然后数据被绑定到HTML中的profile部分.

我正在使用Karma-Mocha和Karma-Sinon来尝试执行单元测试,但我无法理解如何实现这一点,我想验证传入的用户是与模态的resolve参数中使用的相同.

我已经看到了一些如何使用Jasmine进行此操作的示例,但我无法将它们转换为mocha + sinon测试.

这是我的尝试:

设置代码:

describe('Unit: ProfileController Test Suite,', function(){
beforeEach(module('myApp'));

var $controller, modalSpy, modal, fakeModal;

fakeModal  = {// Create a mock object using spies
    result: {
        then: function (confirmCallback, cancelCallback) {
            //Store the callbacks for later when the user clicks on the OK or Cancel button of the dialog
            this.confirmCallBack = confirmCallback;
            this.cancelCallback = …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocha.js sinon angularjs karma-mocha

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