相关疑难解决方法(0)

是否可以将广播接收器定义为清单文件中的内部类?

我想在我的主要活动中创建一个广播接收器作为内部类.但我在清单xml文件中定义广播接收器时遇到问题,因为android无法找到它.

码:

public class MyActivity extends Activity{
    ...

    public class Receiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            ....
        }

    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

表现:

<receiver android:name=".org.danizmax.myapp.MyActivity$Receiver" android:enabled="true">
            <intent-filter>
                <action android:name="org.danizmax.myapp.BROADCAST_INITIAL_DATA"></action>
            </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

我尝试过:

  • .org.danizmax.myapp.MyActivity $接收器
  • org.danizmax.myapp.MyActivity $接收器
  • .MyActivity $接收器
  • .接收机

我看到其他人也有类似的问题,但没有找到任何答案.

那有可能吗?如果没有,有什么更好的方式来使用广播接收器?

谢谢!

android broadcastreceiver android-manifest

40
推荐指数
2
解决办法
3万
查看次数

java.lang.InstantiationException:class没有零参数构造函数

我试图用一个BroadcastReceiver作为一个内部类来跟踪网络状态,但我得到了标题中的例外.我该怎么做才能解决这个问题?

public class NetworkChangeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (wifi.isAvailable() || mobile.isAvailable()) {
            setupData();
            Log.d("Netowk Available ", "Flag No 1");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver

38
推荐指数
2
解决办法
5万
查看次数

是否可以使用Java Reflection创建嵌套类的实例?

代码示例:

public class Foo
{
    public class Bar
    {
         public void printMesg(String body)
         {
             System.out.println(body);
         }
    }
    public static void main(String[] args)
    {
         // Creating new instance of 'Bar' using Class.forname - how?
    }        
}
Run Code Online (Sandbox Code Playgroud)

是否可以创建类Bar的新实例给它的名字?我试着用:

Class c = Class.forName("Foo$Bar")
Run Code Online (Sandbox Code Playgroud)

它找到了类,但是当我使用c.newInstance()时它会抛出InstantiationException.

java reflection inner-classes

34
推荐指数
3
解决办法
4万
查看次数

电池状态改变我无法收到广播?

我有与此帖相同的问题:电池广播接收器不起作用.但似乎没有人回答这个问题.

这是我的BroadcastReceiver:

public class BatteryLevelReceiver extends BroadcastReceiver{


    @Override
    public void onReceive(Context context, Intent intent) {
    Log.v("plugg", "plug change fired");
    Toast.makeText(context, " plug change fired", Toast.LENGTH_LONG).show();
        }
Run Code Online (Sandbox Code Playgroud)

这是我的AndroidManifest.xml:

<receiver android:name=".ReceversAndServices.BatteryLevelReceiver">
               <intent-filter android:priority="900">
               <action android:name="android.intent.action.BATTERY_LOW" />

               </intent-filter>
           </receiver>

           <receiver android:name=".ReceversAndServices.BatteryLevelReceiver">
               <intent-filter android:priority="900">
               <action android:name="android.intent.action.BATTERY_CHANGED" />
               </intent-filter>
           </receiver>
Run Code Online (Sandbox Code Playgroud)

我还在清单中添加了这一行:

<uses-permission android:name="android.permission.BATTERY_STATS"/>
Run Code Online (Sandbox Code Playgroud)

但仍然没有成功!

如果有人能告诉我我做错了什么,我真的很感激.

android battery broadcastreceiver

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

registerMediaButtonEventReceiver未接收事件

我正在尝试接收物理按钮事件,例如手机侧面的音量按钮点击.我需要在服务中执行此操作,因为如果用户随时单击"音量调高/调低"按钮,我希望收到该消息.我在网上看了很多,但我不能让它工作,不知道什么是错的.这是我的代码:

在清单中:

    <receiver android:name=".clsMediaButtonReceiver" >
        <intent-filter android:priority="1000" >
            <action android:name="android.intent.action.MEDIA_BUTTON" />               
        </intent-filter>
    </receiver>  
Run Code Online (Sandbox Code Playgroud)

在服务OnStart()中:

   AudioManager manager = (AudioManager) getSystemService(AUDIO_SERVICE);
   manager.registerMediaButtonEventReceiver(new ComponentName(getPackageName(), clsMediaButtonReceiver.class.getName())); 
Run Code Online (Sandbox Code Playgroud)

一个broascastreceiver:

public class clsMediaButtonReceiver extends BroadcastReceiver
{  

   @Override public void onReceive(Context context, Intent intent)
   {  //This is never shown
      Toast toast1 = Toast.makeText(Context, intent.getAction(), Toast.LENGTH_SHORT);
      toast1.show();
   }

} 
Run Code Online (Sandbox Code Playgroud)

android volume

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