2013-04-23 8 views
7

मैं ब्रॉडकास्ट रिसीवर का उपयोग करने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है, कृपया इस समस्या को हल करने में मेरी सहायता करें। काम नहीं कर रहा MyReceiver.javaस्क्रीन पर चालू/बंद करने के लिए ब्रॉडकास्ट रिसीवर

package com.example.broadcast_receiver; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     Log.i("[BroadcastReceiver]", "MyReceiver"); 

     if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){ 
      Log.i("[BroadcastReceiver]", "Screen ON"); 
     } 
     else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){ 
      Log.i("[BroadcastReceiver]", "Screen OFF"); 
     } 
    } 
} 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.broadcast_receiver" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="9" 
     android:targetSdkVersion="16" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <receiver android:name=".MyReceiver" 
      android:enabled="true" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="android.intent.action.SCREEN_ON"/> 
       <action android:name="android.intent.action.SCREEN_OFF"/> 
      </intent-filter> 
     </receiver> 

     <activity 
      android:name="com.example.broadcast_receiver.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

BroadcastReceiver और नहीं किसी भी लॉग बनाने, कृपया मुझे इस समस्या को हल करने के लिए मदद करते हैं।

+0

जांचें http://stackoverflow.com/a/9478013/1777090 –

+0

कृपया Regitser को किसी अन्य सेवा का उपयोग करें। संदेश प्राप्त या आने वाली कॉल। कृपया लॉग जांचें। –

+0

यह जांचें कि यह आपके लिए पूरी तरह से मदद कर सकता है http://stackoverflow.com/questions/9477922/android-broadcast-receiver-for-screen-on-and-screen-off – nilkash

उत्तर

23

अरे प्रसारण के गतिशील बुला उपयोग करने का प्रयास है, मैं इस कोशिश की यह काम असभ्य होगा ...

public class MainActivity extends Activity { 

    //Create broadcast object 
    BroadcastReceiver mybroadcast = new BroadcastReceiver() {  
     //When Event is published, onReceive method is called 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      Log.i("[BroadcastReceiver]", "MyReceiver"); 

      if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
       Log.i("[BroadcastReceiver]", "Screen ON"); 
      } 
      else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
       Log.i("[BroadcastReceiver]", "Screen OFF"); 
      } 

     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_ON)); 
     registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_OFF)); 
    } 
} 
+1

या यह काम कर रहा है, बीटी मैं चाहता हूं कि यह मेरा ऐप bcoz बंद करने के बाद काम कर रहा है, मैं लॉक स्क्रीन बना रहा हूं, तो आपके पास इसके बारे में कोई विचार है? – user2290872

+0

आप इस प्रसारण को "सेवाएं" – kavya

+0

केके thnx के अंदर कॉल करते हैं, मैंने इसे किया है, लेकिन जब मैंने एप्लिकेशन बंद कर दिया है तो एन को स्क्रीन पर बंद करने का प्रयास करें, यह काम नहीं कर रहा है इसलिए मैं फोन पर चल रही सेवाओं की जांच करता हूं कि कोई सेवा नहीं है जिसे मैंने बनाया है , तो क्या आप 4 मदद कर सकते हैं? – user2290872

3

आप हो रही बैटरी मूल्य के साथ की कोशिश कर सकते हैं:

public class Broadcast extends Activity { 
    //Create broadcast object 
    BroadcastReceiver mybroadcast = new BroadcastReceiver() { 

     //When Event is published, onReceive method is called 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //Get battery percentage 
      int batterylevel = intent.getIntExtra("level", 0);  
      //get progressbar 
      ProgressBar myprogressbar = (ProgressBar) findViewById(R.id.progressbar); 
      myprogressbar.setProgress(batterylevel); 
      TextView tv = (TextView) findViewById(R.id.textfield); 
      //Set TextView with text 
      tv.setText("Battery Level: " + Integer.toString(batterylevel) + "%"); 
     } 
    }); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_broadcast); 
     registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
    } 
} 
+0

या यह काम कर रहा है, बीटी मैं चाहता हूं कि यह है मेरे ऐप bcoz बंद करने के बाद काम मैं लॉक स्क्रीन बना रहा हूँ, तो आप इसके लिए कोई विचार है? – user2290872

+0

आप इस प्रसारण को "सेवाओं" के अंदर कॉल करते हैं – kavya

0

आप को यह रिसीवर चाहते हैं सिस्टम द्वारा बुलाया जाना चाहिए, आपको इसे निर्यात करने की आवश्यकता होगी। आपने निर्यात किया है = "झूठा", इसे सही में बदलें या पूरी तरह से निर्यात हटा दें और यह काम करना शुरू कर देगा। आम तौर पर यह असुरक्षित होगा, लेकिन दोनों SCREEN_ON और SCREEN_OFF संरक्षित-प्रसारण हैं, और आप क्रियाओं को सत्यापित करते हैं, केवल अधिक विश्वसनीय सिस्टम कोड उन्हें भी भेज सकता है, इसलिए यह बहुत सुरक्षित है।

अफसोस की बात यह है कि इस मामले में काम नहीं करेगा क्योंकि प्रसारण के इरादे निम्नलिखित झंडे हैं: Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND

संबंधित मुद्दे