2011-02-02 220 views
1

我正在使用adb命令在Android手機中成功安裝.APK文件。現在我想在安裝時啓動應用程序,我的意思是.apk文件安裝在手機中,然後運行.Apk文件自動運行。請指導我.. 在此先感謝...Android應用程序自動啓動

回答

0

答案是否定的,你根本無法做到這一點。安裝後用戶應手動啓動您的應用程序。

有一種方法 - 首先安裝一個應用程序,它將監控apk安裝並啓動它們。但它需要一個單獨的應用程序。

編輯:這也不再適用於冰淇淋三明治。

+0

我怎樣才能做到這一點,請給我的提示或例如鏈接之前剛開始AlarmManager。請幫助我 – user594746 2011-02-02 07:39:54

0

如果apk是你的(由你製作的),你可以通過接收系統的BOOT_COMPLETE動作讓你的應用程序啓動。 希望它對你有用。

+0

即使此解決方案在用戶首次啓動應用程序(自Android 3.1以後)之前也無法運行。看到這裏: http://commonsware.com/blog/2011/07/05/boot-completed-regression.html – 2012-10-27 21:29:53

0

這是可能的。你可以通過報警管理器來完成。

執行命令

public void installApp(Context context) { 

     Intent receiverIntent = new Intent(context, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(
       context.getApplicationContext(), 234324243, receiverIntent, 0); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() 
       + 1000 * 10, pendingIntent); 

     File file = new File(Shared.getInstance().getApkDirectory()); 
     if (file.exists()) { 
      try { 
       final String command = "pm install -r " + file.getAbsolutePath(); 
       Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", command}); 
       Shared.getInstance().showToast(context, "before wait"); 
       proc.waitFor(); 


      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    } 

寄存器廣播reciver清單中

public class AlarmReceiver extends BroadcastReceiver { 

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

     Intent i = new Intent(context, yourActivity.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
}