2012-08-27 5 views
5

Ứng dụng của tôi sẽ mở hoạt động Cài đặt mạng di động. Tất cả mọi thứ hoạt động tốt, ngoại trừ thiết bị chạy Android 4.1 mà sụp đổ sau khi nỗ lực để mở Cài đặtCài đặt mạng di động trong Android 4.1

Intent intent = new Intent(android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS); 
final ComponentName cName = new ComponentName("com.android.phone", "com.android.phone.Settings"); 
intent.setComponent(cName); 
startActivity(intent); 

Stack trace sau khi đâm:

java.lang.SecurityException: Permission Denial: starting Intent { act=android.settings.DATA_ROAMING_SETTINGS cmp=com.android.phone/.Settings } from ProcessRecord{41b83198 ... 

Bất kỳ ý tưởng? Có thể vì bản kê khai?

UPDATE:

Seem rằng vấn đề đã được giải quyết ở đây: Android - Mobile network settings menu (Jelly Bean)

Vấn đề là phải thay đổi "com.android.phone.Settings" thành "com.android.phone.MobileNetworkSettings"

+0

Bạn đang thử nghiệm thiết bị nào, vì [trong một số trường hợp, Hoạt động phù hợp có thể không tồn tại, vì vậy hãy đảm bảo bạn bảo vệ chống lại điều này] (http://developer.android .com/reference/android/provider/Settings.html # ACTION_DATA_ROAMING_SETTINGS) – Andrei

+0

Sự cố đã được tìm thấy trên Nexus S – Alex

Trả lời

7

tôi nghĩ rằng bạn phải cố gắng

Intent intent = new Intent(); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setAction(android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS); 
startActivity(intent); 

điều này đang làm việc cho tôi trong android 4.1.2, có thể họ đã khắc phục sự cố này trong 4.1.2