【问题标题】:how to invoke an interface using Broadcast receiver in android如何在android中使用广播接收器调用接口
【发布时间】:2012-12-13 12:42:45
【问题描述】:

我想使用广播接收器在固定时间调用此方法的警报

/**
 * Delete all messages
 */
private void performDeleteAll() {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(getString(R.string.confirm_message))
            .setCancelable(false)
            .setNegativeButton(getString(R.string.confirm_no),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    })
            .setPositiveButton(getString(R.string.confirm_yes),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // delete all messages
                            mHandler.post(mDeleteAllMessages);
                            adapter.refresh();
                        }
                    });
    AlertDialog alert = builder.create();
    alert.show();

}

删除所有消息但它没有发生请帮助我 提前致谢

/** *删除所有消息。 0 - 成功删除。 1 - 没有什么可做的 * 已删除。 */

final Runnable mDeleteAllMessages = new Runnable() {
    public void run() {
        getActivity().setProgressBarIndeterminateVisibility(true);
        boolean result = false;

        int deleted = 0;

        if (adapter.getCount() == 0) {
            deleted = 1;
        } else {
            result = model.deleteAllMessages();
        }

        try {
            if (deleted == 1) {
                toastLong(R.string.no_messages_to_delete);
            } else {
                if (result) {

                    toastLong(R.string.messages_deleted);
                    showMessages();
                } else {
                    toastLong(R.string.messages_deleted_failed);
                }
            }
            getActivity().setProgressBarIndeterminateVisibility(false);
        } catch (Exception e) {
            return;
        }
    }
};

我正在使用这个广播接收器

public class AlarmReceiver extends BroadcastReceiver implements Runnable {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(context, "Import Messages Invoke ",Toast.LENGTH_LONG).show();
    //  context.startService(new Intent(context,ImportMessagesTask.class));

        MessagesModel.deleteAllMessages();{
    //   new MessagesModel().deleteAllMessages();

        Database.mMessagesContentProvider.deleteAllMessages();
        }

    //  mHandler.post(mDeleteAllMessages);
    //  adapter.refresh();

正如你所说,我创建了一个活动

公共类 Activity 扩展 PendingMessages 实现 Runnable{

/**
 * Delete all messages. 0 - Successfully deleted. 1 - There is nothing to be
 * deleted.
 */

@Override
public void run() {
    // TODO Auto-generated method stub
    getActivity().setProgressBarIndeterminateVisibility(true);
    boolean result = false;

    int deleted = 0;

    if (adapter.getCount() == 0) {
        deleted = 1;
    } else {
        result = model.deleteAllMessages();
    }

    try {
        if (deleted == 1) {
            toastLong(R.string.no_messages_to_delete);
        } else {
            if (result) {

                toastLong(R.string.messages_deleted);
                showMessages();
            } else {
                toastLong(R.string.messages_deleted_failed);
            }
        }
        getActivity().setProgressBarIndeterminateVisibility(false);
    } catch (Exception e) {
        return;
    }
}

}

然后通过调用它

context.startService(new Intent(context,Activity.class));

但它不起作用然后我通过t调用它

context.startActivity(new Intent(context,Activity.class));

然后它强制关闭 我没有得到任何帮助请让我正确 在此先感谢

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:

    您无法显示来自广播接收器的 UI。

    把上面的代码放到activity中,从BroadcastReciever启动activity

    编辑:使用

    context.startActivity(intent);
    

    开始活动

    【讨论】:

    • 感谢您的快速回复,但我无法从此代码启动活动,请帮助我
    • create intent get context startActivity/startService,应该没问题
    • 请告诉我在新活动中我应该实现 Runnable 还是什么?请给我一些例子
    • 我想在警报调用时在后台运行它请给我一些例子
    【解决方案2】:

    实际上问题是我想在后台运行 UI,但在 Android 中是不可能的。然后我使用Service在后台运行

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2014-10-30
      • 1970-01-01
      相关资源
      最近更新 更多