小编sup*_*iox的帖子

如何取消注册BroadcastReceiver

我的应用程序使用BroadcastReceiver以这种方式获取短信:

SmsBR.java

public class SmsBR extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Object[] pdus = (Object[])bundle.get("pdus");
            final SmsMessage[] messages = new SmsMessage[pdus.length];

            for (int i = 0; i < pdus.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
            }
            if (messages.length > 0)
                //doSomething();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

的Manifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Activity" 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:name=".SmsBR">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
        </intent-filter> …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver

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

使用javascript播放mp3文件

哪种是通过javascript播放mp3(非常短)文件的最佳和跨浏览器方式?我试过不同的方法,但总是有问题......

编辑1:

我不需要一个"完整"的播放器,我只需要一个功能,而不是每当有事情发生时我都可以调用

编辑2:

好的,我要更好地解释我的问题.服务器是连接在局域网中的智能手机,但并不总是连接到互联网.我想使用mp3,因为文件重量只有3kb(而不是60kb的wav),但如果播放此文件的机制太"重"(播放器或jquery.js),我认为最好使用wav文件.其他建议?

javascript mp3 cross-browser

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

从服务获取Activity的引用

我需要从服务中获取对主Activity的引用.

这是我的设计:

MainActivity.java

public class MainActivity extends Activity{
private Intent myIntent;
onCreate(){
 myIntent=new Intent(MainActivity.this, MyService.class);

 btnStart.setOnClickListener(new OnClickListener(){
  public void onClick(View V){
   startService(myIntent);
   });
}}
Run Code Online (Sandbox Code Playgroud)

MyService.java

class MyService extends Service{

 public IBinder onBind(Intent intent) {
  return null;
 }

 onCreate(){
 //Here I need to have a MainActivity reference
 //to pass it to another object
 }
}
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

[编辑]

感谢大家的答案!这个应用程序是一个Web服务器,此时只适用于线程,我想使用服务,使其在后台工作.问题是我有一个负责从资产获取页面的类,要执行此操作,我需要使用此方法:

InputStream iS =myActivity.getAssets().open("www/"+filename); 
Run Code Online (Sandbox Code Playgroud)

此时我的项目只有一个Activity而没有服务,所以我可以直接从它自己传递main活动的引用:

WebServer ws= new DroidWebServer(8080,this);
Run Code Online (Sandbox Code Playgroud)

因此,为了使这个应用程序与服务一起使用,我应该在设计中改变什么?

android android-intent android-service android-activity

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

如何获取我的IP地址?

我有一个serverSocket,我想知道IP地址,但有

listenSocket.getInetAddress().toString();
Run Code Online (Sandbox Code Playgroud)

我得到0.0.0.0.如何获取IP地址,或者(如果启用了两个连接)其中一个?

sockets android ip-address

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

如何使用rawQuery()方法插入记录?

我需要使用rawQuery()方法存储记录,因为我想插入当前的日期和时间(datetime()),但我还需要插入包含引号的字符串.

所以我写了这段代码:

String sql="INSERT INTO sms VALUES ( null, ?1, ?2, ?3, datetime())";
dbw.rawQuery(sql, new String[]{str1,str2,str3});
Run Code Online (Sandbox Code Playgroud)

但它没有存储任何东西......出了什么问题?

[编辑]

这样我就不会出错,但是没有插入记录.

String mitt="mitt", dest="dest", text="text";
String sql="INSERT INTO sms VALUES ( null, ?, ?, ?, datetime('NOW'))";
dbw.rawQuery(sql, new String[]{mitt,dest,text});
Run Code Online (Sandbox Code Playgroud)

此时,唯一可以插入记录的方法(带引号问题)是execSQL(String s).

sqlite android

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

使用JavaScript自定义确认对话框

我想创建一个类似于confirm()显示对话框(带有问题和2个按钮的div)的JavaScript函数,true如果用户单击"确定"或false其他,则返回.

是否可以使用JavaScript/jQuery但没有插件(例如jQuery UI或Dialog)?因为我正在努力减少尺寸和往返时间......

我试着编写这段代码,但我不知道如何让用户点击这个函数"等待".

我想以这种方式使用我的函数:

answer=myConfirm("Are you sure?")
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以在几个上下文中使用相同的函数,只需更改作为参数传递的问题.这与confirm()的行为相同

javascript jquery confirm dialog callback

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

BroadcastReceiver用于多部分SMS

当我收到短信时,我需要将短信存储到sqlite数据库中.此时它与短信(160个字符)一起正常工作,但如果我收到一个多部分短信,它会将短信截断为大约155个字符.

这是我的代码:

SmsBR.java

public class SmsBR extends BroadcastReceiver {
    private DBManager dbm;
        @Override
        public void onReceive(Context context, Intent intent) {
                    Bundle bundle = intent.getExtras();
                    if (bundle != null) {
                        Object[] pdus = (Object[])bundle.get("pdus");
                        final SmsMessage[] messages = new SmsMessage[pdus.length];
                        for (int i = 0; i < pdus.length; i++) {
                            messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                        }
                        if (messages.length > 0) {
                            dbm=DBManager.getDBM(null);
                            dbm.insertSMS(messages[0]);
                                                   }}}}
Run Code Online (Sandbox Code Playgroud)

DBManager是我编写的单例类,用于简化读/写操作,我确信它对长文本没有问题!

sqlite sms android multipart broadcastreceiver

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

从超类方法调用子类方法?

我的应用程序的结构与此类似:

class Father{
a(){ ... }

b(){a();}
}

class Son extends Father{
a(){ ..... }} //override
Run Code Online (Sandbox Code Playgroud)

b()没有被覆盖.当我创建Son的一个实例并且我调用b()时,父的a()被调用,但我希望它执行Son一个(如果对象是Son).可能吗?

java extends overriding subclass superclass

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

如何处理SMS SENT事件?

我正在编写一个使用SmsManager发送短信的应用程序.如何获得有关此操作成功的信息?是否有"sms发送"事件的BroadcastReceiver?

谢谢你的建议

sms android broadcastreceiver

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