【发布时间】:2015-12-08 00:38:07
【问题描述】:
我正在开展一个尝试将数据从 Android 应用程序发送到 Tizen 磨损手表的项目。我有一个三星提供的示例应用程序,但这是基于 Eclipse (R.I.P) 的超级旧版本。
所以,我创建了一个示例应用程序,第一步是获取权限(对于 Marshmallow 操作系统)。这些权限由 Manifest 文件中的示例代码提供。
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="com.samsung.accessory.permission.ACCESSORY_FRAMEWORK" />
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
<uses-permission android:name="com.samsung.WATCH_APP_TYPE.Companion" />
<uses-permission android:name="com.samsung.wmanager.ENABLE_NOTIFICATION" />
所以,我正在尝试在应用启动时获得这些权限。
public class MainActivity extends AppCompatActivity
{
private static final String TAG = "MainActivity";
private static final int MY_PERMISSIONS_REQUEST = 101;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Check permissions
getPermissions();
}
public void getPermissions()
{
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
"com.samsung.accessory.permission.ACCESSORY_FRAMEWORK",
"com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY",
"com.samsung.WATCH_APP_TYPE.Companion",
"com.samsung.wmanager.ENABLE_NOTIFICATION"}, MY_PERMISSIONS_REQUEST);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults)
{
for(int i : grantResults)
{
Log.d(TAG, "Result: " + i);
}
switch (requestCode)
{
case MY_PERMISSIONS_REQUEST:
{
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED &&
grantResults[1] == PackageManager.PERMISSION_GRANTED &&
grantResults[2] == PackageManager.PERMISSION_GRANTED &&
grantResults[3] == PackageManager.PERMISSION_GRANTED &&
grantResults[4] == PackageManager.PERMISSION_GRANTED &&
grantResults[5] == PackageManager.PERMISSION_GRANTED)
{
displayMessage("Permissions granted");
}
else
{
displayMessage("Please accept permissions to proceed.");
this.finish();
}
}
}
}
private void displayMessage(String message)
{
if (TextUtils.isEmpty(message))
{
return;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}
当我运行它时,即使是蓝牙也不会显示权限请求对话框,并且应用程序明显关闭(由于代码)。我在日志中看到以下结果:
D/MainActivity: Result: 0
D/MainActivity: Result: 0
D/MainActivity: Result: -1
D/MainActivity: Result: -1
D/MainActivity: Result: -1
D/MainActivity: Result: -1
由于某些原因,Android 会自动授予我蓝牙权限,但不知道如何获得这些三星权限。
【问题讨论】:
标签: android bluetooth permissions wear-os