2012-10-02 17 views
5

मैं इस सुविधा को अपने ऐप में जोड़ना चाहता हूं जिसमें उपयोगकर्ता एप्लिकेशन प्रारंभ समय सेट कर सकता है और उस समय एप्लिकेशन शुरू हो जाएगा। उपयोगकर्ता विशिष्ट समय पर अपना ऐप खोलने के लिए मैं प्रसारण रिसीवर का उपयोग कैसे कर सकता हूं। मुझे यकीन नहीं है कि एंड्रॉइड में यह संभव है या नहीं? यदि आपके पास साझा करने की तुलना में कोई विचार है। यहाँ मुख्य गतिविधि कोडविशेष समय पर आवेदन कैसे शुरू करें

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    lv1=(ListView)findViewById(R.id.listView); 
    final ImageView splashImage = (ImageView) findViewById(R.id.imageView1); 
    splashImage.setBackgroundResource(R.layout.splash); 
    AnimationDrawable splashAnimation = (AnimationDrawable) splashImage.getBackground(); 
    splashImage.onWindowFocusChanged(true); 
    splashAnimation.start();  
    AlarmManager am = (AlarmManager) getBaseContext().getSystemService(Context.ALARM_SERVICE); 
    Date futureDate = new Date(new Date().getTime() + 86400000); 
    Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.MINUTE, 1);// start app in 1 min again 
    futureDate.setHours(0); 
    futureDate.setMinutes(0); 
    futureDate.setSeconds(20); 
    Intent intent = new Intent(getBaseContext(), MyAppReciever.class); 
    PendingIntent sender = PendingIntent.getBroadcast(getBaseContext(), 0, intent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
    am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis() , sender);}} 

है और यह reciver वर्ग कोड

class MyAppReciever extends BroadcastReceiver{ public void onReceive(Context context,Intent intent) { 
startActivity(new Intent(context, Main_Activity.class)); 
}private void startActivity(Intent intent) { 
// TODO Auto-generated method stub}} 

मैं प्रकट

<receiver android:process=":remote" android:name="MyAppReciever"></receiver> 
अब

मेरे प्रसारण ट्रिगर करने के लिए इस लाइन को शामिल किया है है, लेकिन मैं यह त्रुटि आई

10-02 17:56:27.735: E/AndroidRuntime(9020): java.lang.RuntimeException: Unable to instantiate receiver com.example.testgui.MyAppReciever: java.lang.IllegalAccessException: access to class not allowed 

आप

+0

कृपया, मेरे उदाहरण पर एक नज़र डालें ... –

+0

दिनांक भविष्य के साथ प्रयास करें दिनांक = नई तिथि (नई तिथि()। GetTime()); तारीख भविष्य की तारीख = नई तिथि (नई तिथि()। getTime() + 86400000); –

+0

मैंने भविष्य में कोड में कुछ बदलाव किया है। मैं भविष्य में 1 मिनट में प्रसारित ट्रिगर के लिए कैलेंडर ऑब्जेक्ट का उपयोग कर रहा हूं .. इसलिए 1 मिनट के बाद मुझे बल बंद कर दिया गया .. क्योंकि "अवैध एक्सेस अपवाद: कक्षा तक पहुंच की अनुमति नहीं है" –

उत्तर

7

@ पॉल डी 'अंबरा ने कहा, आप इसे अलार्ममेनर के साथ कर सकते हैं।

उदाहरण:

सबसे पहले आप अलार्म सेट करने की जरूरत है:

public class MyAppReciever extends BroadcastReceiver { 

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

    startActivity(new Intent(context, MyApp.class)); 
    } 
} 
:

AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE); 

Date futureDate = new Date(new Date().getTime() + 86400000); 


futureDate.setHours(8); 
futureDate.setMinutes(0); 
futureDate.setSeconds(0); 


Intent intent = new Intent(con, MyAppReciever.class); 

PendingIntent sender = PendingIntent.getBroadcast(con, 0, intent, 
     PendingIntent.FLAG_UPDATE_CURRENT); 

अगला आप (आपके ऐप्लिकेशन शुरू करने अर्थात्) कुछ कोड के साथ एक रिसीवर बनाने के लिए निष्पादित करने के लिए की जरूरत है

+2

इस कोड को मुझे केवल संपादन टेक्स्ट से इनपुट लेने की आवश्यकता है और इसे भविष्य मेंडेट.सेटहोर्स (i) में डालें; भविष्यडेटडेट.सेट मिनट (जे); सही? –

+0

यदि आप जागने की तारीख सेट करने के लिए संपादन ग्रंथों का उपयोग कर रहे हैं, तो हाँ, आपको केवल घंटों, मिनट या सेकंड सेट करने की आवश्यकता है। आपके उदाहरण में –

+0

"con" ऑब्जेक्ट क्या है? con.getSystemService() –

6

Am बस के बारे में कार्यालय से बाहर चलने के लिए तो कोई संदेह नहीं है किसी को एक अधिक विस्तृत जवाब में जोड़ सकते हैं धन्यवाद, लेकिन आप AlarmManager

अलार्म प्रबंधक मामलों के लिए है का उपयोग करने के जहां आप चाहते हैं की जरूरत है अपने एप्लिकेशन कोड को किसी विशिष्ट समय पर चलाएं, भले ही आपका एप्लिकेशन वर्तमान में चल रहा न हो।

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