相关疑难解决方法(0)

广播接收器不会收到相机事件

我正在尝试创建一个可以检测用户何时拍照的应用.我设置了一个广播接收器类,并通过以下方式将其注册在清单文件中:

<receiver android:name="photoReceiver" >
  <intent-filter>
    <action android:name="com.android.camera.NEW_PICTURE"/>
      <data android:mimeType="image/*"/>
 </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

无论我尝试做什么,该程序都不会收到广播.这是我的接收器类:

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

@Override
public void onReceive(Context context, Intent intent) {
    CharSequence text = "caught it";
    int duration = Toast.LENGTH_LONG;
    Log.d(TAG, "Received new photo");

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
 }
}
Run Code Online (Sandbox Code Playgroud)

如果我删除清单和我的活动中的mimeType行,我会发送自己的广播

Intent intent = new Intent("com.android.camera.NEW_PICTURE");
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

然后我成功收到广播,可以看到日志和吐司窗口​​.我是以正确的方式接近这个吗?我需要添加什么东西吗?

android android-manifest android-camera android-camera-intent

20
推荐指数
4
解决办法
2万
查看次数

Android:FileObserver仅监控顶级目录

根据文件,

"Each FileObserver instance monitors a single file or directory. If a directory is monitored, 
events will be triggered for all files and subdirectories inside the monitored directory."
Run Code Online (Sandbox Code Playgroud)

我的代码就像,

    FileObserver fobsv = new FileObserver("/mnt/sdcard/") {

    @Override
    public void onEvent(int event, String path) {
        System.out.println(event+"    "+path);
    }
    };
    fobsv.startWatching();
Run Code Online (Sandbox Code Playgroud)

但是,onEvent()只有在/ mnt/sdcard /中更改文件时才会触发.如果我在/ mnt/sdcard/downloads /中创建一个文件,则该方法不会被触发.

代码有问题吗?

android android-sdcard fileobserver

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